我有两个具有共同索引的数据框。我想根据
df1
中的列子集对 df2
进行分组。
我知道如何对
df1
中已有的多个列进行分组,例如df1.groupby(['col1', 'col2'])
,并且我知道如何对具有相同索引的不同系列进行分组,例如df1.groupby(df2['col1'])
。有没有立即的方法来做类似的事情
>>> df1.groupby(df[['col1', 'col2']])
# ValueError: Grouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensional
当然可以
df1.groupby([df2['col1'], df2['col2']])
但似乎应该有一个更直接的语法。 (想象一下有几个分组列等)
怎么样:
gbobj = pd.concat([df1, df2[['col1','col2']], axis=1).groupby(['col1','col2'])
它可以是
merge
、join
或 concat
两个数据帧,然后使用列表理解进行分组或“更直接的语法”,例如:
many_grouping_columns = ['A', 'B', ...] # columns found in in df2
df1.groupby([df2[col] for col in many_grouping_columns])
您需要将
df2
转换为 list
列表:
df1.groupby(df[['col1', 'col2']].T.values.tolist())
应该给你你想要的结果