首页 > 解决方案 > 具有不同大小索引的 Pandas groupby(df.index)

问题描述

我有一个数据框数组dfs = [df0, df1, ...]。它们中的每一个都有一个date不同大小的列(一些dates 可能在一个数据框中,但不在另一个数据框中)。

我想要做的是:

pd.concat(dfs).groupby("date", as_index=False).sum()

但是日期不再是列而是索引(dfs = [df.set_index("date") for df in dfs])。

我看到你可以传递df.indexgroupby( .groupby(df.index)) 但df.index可能不包括所有日期。

我怎样才能做到这一点?

这里的目标是调用.sum()groupby所以我不依赖于使用groupby,也concat没有任何替代方法可以这样做。

标签: pythonpandas

解决方案


如果我能理解,也许你想要这样的东西:

df = pd.concat([dfs])
df.groupby(df.index).sum()

这是一个小例子:

tmp1 = pd.DataFrame({'date':['2019-09-01','2019-09-02','2019-09-03'],'value':[1,1,1]}).set_index('date')
tmp2 = pd.DataFrame({'date':['2019-09-01','2019-09-02','2019-09-04','2019-09-05'],'value':[2,2,2,2]}).set_index('date')
df = pd.concat([tmp1,tmp2])
df.groupby(df.index).sum()

推荐阅读