pandas添加groupby聚合

时间:2017-05-18 06:01:22

标签: python pandas pandas-groupby

我正在阅读多个pickle文件,在那里我进行分组聚合,然后丢弃数据帧。例如,每个pickle文件都是一个月内销售商品的数据框。我希望每天能够找到多少独特商品。

n_items = []
for file in files:
    df = pd.read_pickle(file)

    # Get unique number of items per day
    df.timestamp = pd.to_datetime(df.timestamp)
    n_items.append(df.groupby(pd.Grouper(key='timestamp', freq='1D')).items.unique())

这将为我提供一系列独特项的groupby元素(请注意,每个数据框都在30天内完成)

所以最后一个问题是:我将如何重组'所有这些数据框架使我每天只剩下唯一的项目。

这是我能找到的最接近的答案,但它是一个加起来的聚合,而不是使用unique()Aggregation of pandas groupby objects

1 个答案:

答案 0 :(得分:1)

我认为您需要concat + groupby + numpy.concatenate

df = pd.concat(n_items)
df = df.groupby(level=0).apply(lambda x: np.concatenate(x.values)).reset_index()

另一种解决方案是从所有文件创建一个大数据框,然后聚合:

df = pd.concat([pd.read_pickle(file) for file in files], ignore_index=True)
df.timestamp = pd.to_datetime(df.timestamp)
df1 = df.groupby(pd.Grouper(key='timestamp', freq='1D')).items.unique()