我正在阅读多个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
答案 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()