基于另一个数据框的Python Pandas groupby

问题描述 投票:0回答:3

我有两个具有共同索引的数据框。我想根据

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']])

但似乎应该有一个更直接的语法。 (想象一下有几个分组列等)

python pandas pandas-groupby
3个回答
1
投票

怎么样:

gbobj = pd.concat([df1, df2[['col1','col2']], axis=1).groupby(['col1','col2'])

1
投票

它可以是

merge
join
concat
两个数据帧,然后使用列表理解进行分组或“更直接的语法”,例如:

many_grouping_columns = ['A', 'B', ...]  # columns found in in df2
df1.groupby([df2[col] for col in many_grouping_columns])

0
投票

您需要将

df2
转换为
list
列表:

df1.groupby(df[['col1', 'col2']].T.values.tolist())

应该给你你想要的结果

© www.soinside.com 2019 - 2024. All rights reserved.