pandas多Excel合并、统计、列名更换、列数据类型改变

  • 多Excel合并、统计

    • #统计拉取到的数据报表
          def analysis_report(self):
              dir = os.getcwd()
              file_list = os.listdir(dir)
              report_list = [file for file in file_list if '.xlsx' in file]
              data = pd.DataFrame(columns=[u'任务ID', u'通话时长(秒)', u'项目名称', u'创建时间', u'模型'])
              df = []
              for file in report_list:
                  report_df = pd.read_excel(file)
                  #print(report_df.shape[0])
                  info = report_df[:-1]
                  df.append(info)
              data = data.append(df, ignore_index=True) 
              data[u'通话时长(秒)'] = data[u'通话时长(秒)'].astype(int)
              #print(data.info())
              #print(data.shape[0])
              # project = list(set(data[u'项目名称']))
              project_durat = data.loc[:, [u'通话时长(秒)', u'项目名称']].groupby(u'项目名称').sum()
              project_durat[u'通话时长(秒)'] = project_durat[u'通话时长(秒)'].apply(lambda x: round(x / 3600, 2))
              project_durat.rename(columns=lambda x: x.replace('秒', '小时'), inplace=True)
              project_durat.to_excel(u'项目数据统计.xlsx', sheet_name='sheet1')
              os.system('rm -f 通话列表*')
              excel_name = u'项目数据统计.xlsx'
              return excel_name
      
    • 需要注意的事项

      • pandas的DataFrame的合并生成的是一个新的对象
      • 更改DataFrame的某一列的数据类型这里使用了astype(数据类型)其他方法:
        • 将DataFrame的一个或多个列转换为数值的最佳方法是使用pandas.to_numeric()
        • 0.21.0版介绍了该方法infer_objects()用于将具有对象数据类型的DataFrame列转换为更特定的类型(软转换)
      • 修改列名还有一种方法:
        • df.rename(columns=({u'通话时长(秒)':u'通话时长(时)'}, inplace=True)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蜗牛爱远行

如果帮助到您,请作者喝个咖啡呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值