Python Pandas 基于另一个数据框的groupby
Python Pandas groupby based on another dataframe
我有两个具有共同索引的数据框。我想根据 df2
.
中的列子集对 df1
进行分组
我知道如何对 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
.
df1
进行分组
我知道如何对 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])