首页 > 解决方案 > 如何在熊猫中组合 groupby(s)?

问题描述

我有两个数据框,我想使用 Python 连接 groupby 结果......我该怎么做?

df1=pd.DataFrame({'Country':["US","CN","GB","US","DE","AU","CM","CU","CM"],'July Volume': [2541,3766,3071,1881,4653,1890,3203,1820,1411],
              'July Sales':[40264,40400,16135,41301,13757,45066,53709,42798,16184]})

df2=pd.DataFrame({'Country':["BA","CN","BE","US","AR","US","CM","CU","GB"],'Aug Volume':[4928,1665,4438,3241,4700,2304,2138,2692,4054],
              'Aug Sales':[18291,39776,41642,28364,21437,42000,56684,45179,23534]})

Groupby df1

df1.groupby('Country').agg({'July Sales':['count','sum']})

Groupby df2

df2.groupby('Country').agg({'Aug Sales':['count','sum']})

我的预期结果是: 在此处输入图像描述

因为实际数据非常大,有数百列,我不想先加入它们......

有什么想法和想法吗?谢谢您的帮助。

标签: pythonpandasconcatenationpandas-groupby

解决方案


你可以pandas.concat()这样使用:

df1 = df1.groupby('Country').agg({'July Sales':['count','sum']})
df2 = df2.groupby('Country').agg({'Aug Sales':['count','sum']})

df = pd.concat([df1,df2],axis=1)

df 看起来像:

    July Sales         Aug Sales
         count    sum      count    sum
AR         NaN    NaN          1  21437
AU           1  45066        NaN    NaN
BA         NaN    NaN          1  18291
BE         NaN    NaN          1  41642
CM           2  69893          1  56684
CN           1  40400          1  39776
CU           1  42798          1  45179
DE           1  13757        NaN    NaN
GB           1  16135          1  23534
US           2  81565          2  70364

推荐阅读