首页 > 解决方案 > 如何将熊猫 groupby 输出转换为单独的 excel 表?

问题描述

我创建了 10 天每小时数据的时间戳,然后创建了 2 个具有随机值的随机列。

import pandas as pd
import numpy as np
timestamp = pd.date_range('01/01/2020 00:00','01/10/2020 23:00', freq = '1H')
arr1 = np.random.randint(100,200,(len(timestamp)))
arr2 = np.random.randint(100,200,(len(timestamp)))

使用和作为列和作为索引创建了dataframe这两个。arrayscol1col2timestamp

dic1 = {'col1':arr1,'col2':arr2}
df = pd.DataFrame(dic1, index=timestamp)

之后,我使用 pandasgroupby函数对它们进行分组days,我想创建每个组的 excel 输出(10 天 10 个 excel 输出)。

df2 = df.groupby(pd.Grouper(freq='D'))
for idx, i in enumerate(df2):
   df = pd.Dataframe(i)
   df.to_csv(str(idx)+'.csv')

但这给出了非常奇怪的输出,有 10 个 excel 文件,但其中没有值。有人可以帮忙吗? 第 1 天的期望输出在此处输入图像描述

同样,每天都应该生成这种类型的 excel。

标签: pythonpandasgroup-by

解决方案


如果你迭代 a .groupby,你会得到一个 2 元组,其中第一个元素是组键,第二个元素是组数据,所以你需要类似:

df2 = df.groupby(pd.Grouper(freq='D'))
for idx, (_, sdf) in enumerate(df2):
   sdf.to_csv(str(idx) + '.csv')

推荐阅读