#python #pandas #pandas-groupby
#питон #панды #панды-групповые
Вопрос:
У меня есть два кадра данных с общим индексом. Я хотел бы сгруппироваться df1
на основе подмножества столбцов в df2
.
Я знаю , как сгруппировать несколько столбцов уже в df1
, например df1.groupby(['col1', 'col2'])
, и я знаю, как сгруппироваться в другой серии с тем же индексом, например df1.groupby(df2['col1'])
. Есть ли немедленный способ сделать что-то вроде
gt;gt;gt; df1.groupby(df[['col1', 'col2']]) # ValueError: Grouper for 'lt;class 'pandas.core.frame.DataFrame'gt;' not 1-dimensional
Конечно, я мог бы сделать
df1.groupby([df2['col1'], df2['col2']])
но, похоже, для этого должен быть более прямой синтаксис. (Представьте, что у вас есть несколько группирующих столбцов и т. Д.)
Комментарии:
1. групповая серия, а не фрейм данных
Ответ №1:
Как насчёт:
gbobj = pd.concat([df1, df2[['col1','col2']], axis=1).groupby(['col1','col2'])
Ответ №2:
Это может быть merge
либо join
concat
два кадра данных , а затем группировка, либо «более прямой синтаксис» с использованием понимания списка, например:
many_grouping_columns = ['A', 'B', ...] # columns found in in df2 df1.groupby([df2[col] for col in many_grouping_columns])