不废话,直接上代码
import pandas as pd
path = r'连胜情况.xlsx'
def read_content(path):
df = pd.read_excel(path,header=None)
df.columns=['A','B']
# print(df)
#1.先把不是胜利的数字换成0,数据存在C列中
df['A'] = df['A'].astype(str)
df['C'] = df['B'].apply(lambda x:0 if x!=1 else x)
#2.获取A列都有哪些id
id_list = df['A'].unique()
#3.存放统计的数据字典
con_win_dic={}
for id in id_list:
#1.每次筛选一个id
df_new = df.loc==id]
#2.按照相邻数据比较,便于下次分组用,统计连续数字的方法见这个网址https://stackoverflow.com/questions/40802800/how-to-groupby-consecutive-values-in-pandas-dataframe
grouper = (df_new['C'] != df_new['C'].shift()).cumsum()
#3.写一个空的列表,用于存储每次连胜数据
list_num=[]
for i ,j in df_new.groupby(grouper):
list_num.append(len(j.C))
#4.每个最大的连胜数和id存放在字典中
con_win_dic=max(list_num)
# print(con_win_dic)
# result = pd.DataFrame()#横着的格式的
result = pd.DataFrame.from_dict(con_win_dic,orient='index',columns=['连胜最多场次'])
print(result)
result.to_csv(r'连胜情况.txt',sep='\t')
if __name__ == '__main__':
read_content(path)
用了两次for循环,应该还能优化下,pandas有点生疏了 这个题挺好,楼主可以吧标题修改下,改成求各个id的连胜场次最大值 xu007xu 发表于 2021-5-26 22:24
请问一下,为什么会报错
你查看下,文件路径,安装的pandas包
还有你的python版本。
我这里又试了一下没问题的。 新人报到,请多指教
页:
[1]