如何将pandas groupby时间分组结果导出为单独的Excel/CSV文件
错误原因
- 迭代pandas的
groupby对象时,每次返回的是(分组键, 分组对应DataFrame)的二元组,原代码直接将整个元组转为DataFrame,结构完全错误导致导出无有效数据 - 存在拼写错误:
pd.Dataframe需改为pd.DataFrame(DataFrame的F为大写) - 循环内错误复用
df变量,覆盖了原始数据集变量,属于不规范编码习惯
修复后代码
如果想要用日期作为文件名,便于直接识别对应数据所属日期,可使用以下代码:
df2 = df.groupby(pd.Grouper(freq='D')) # 迭代时直接拆分分组键(对应日期)和分组数据 for day, group_df in df2: file_name = day.strftime("%Y-%m-%d") + ".csv" # 无需二次转换,直接导出分组得到的DataFrame即可 group_df.to_csv(file_name)
如果要保留原需求的序号命名方式,可修改为以下代码:
df2 = df.groupby(pd.Grouper(freq='D')) for idx, (day, group_df) in enumerate(df2): group_df.to_csv(f"{idx}.csv")
补充说明
如果需要导出为Excel格式,把to_csv方法替换为to_excel即可,注意提前安装openpyxl依赖库。
内容的提问来源于stack exchange,提问作者Vesper
相关产品推荐
相关产品推荐

