鱼C论坛

 找回密码
 立即注册
查看: 3607|回复: 5

[已解决]用Python读取Excuse文件

[复制链接]
头像被屏蔽
发表于 2021-5-24 12:16:21 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-24 12:16:22 | 显示全部楼层    本楼为最佳答案   
统计的是用的pandas
不废话,直接上代码
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[df['A']==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[id]=max(list_num)
    # print(con_win_dic)
    # result = pd.DataFrame([con_win_dic])#横着的格式的
    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有点生疏了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-26 16:23:43 | 显示全部楼层
这个题挺好,楼主可以吧标题修改下,改成求各个id的连胜场次最大值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
 楼主| 发表于 2021-5-26 22:24:09 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-27 09:11:45 | 显示全部楼层
xu007xu 发表于 2021-5-26 22:24
请问一下,为什么会报错

你查看下,文件路径,安装的pandas包
还有你的python版本。
我这里又试了一下没问题的。
搜狗截图20210527091013.jpg

连胜情况.txt

13.63 KB, 下载次数: 1

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-27 13:50:38 | 显示全部楼层
新人报到,请多指教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-9 01:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表