-
多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列转换为更特定的类型(软转换)
- 将DataFrame的一个或多个列转换为数值的最佳方法是使用
- 修改列名还有一种方法:
df.rename(columns=({u'通话时长(秒)':u'通话时长(时)'}, inplace=True)
-