Python 熊猫-联合df.loc进行多个操作?

Python 熊猫-联合df.loc进行多个操作?,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,是否有方法执行一次df.loc查找,然后对行子集执行多个操作 这就是动机。我有两个数据帧,数据在同一个用户上。我在df_2.groupby('user_id')上循环,然后查找另一个数据帧以分配一些值: for user, user_df in df_2.groupby('user_id'): df_1.loc[df_1.user_id == user, 'value_1'] == user_df.value_1.mean() df_1.loc[df_1.user_id == u

是否有方法执行一次
df.loc
查找,然后对行子集执行多个操作

这就是动机。我有两个数据帧,数据在同一个用户上。我在
df_2.groupby('user_id')
上循环,然后查找另一个数据帧以分配一些值:

for user, user_df in df_2.groupby('user_id'):
    df_1.loc[df_1.user_id == user, 'value_1'] == user_df.value_1.mean()
    df_1.loc[df_1.user_id == user, 'value_2'] == user_df.value_2.min()

我是否可以以某种方式将它们组合起来,只执行一个df.loc,但同时指定两个值

您可以对齐索引,然后使用就地:


请注意,这也消除了对循环使用Python级别的
的需要。

我相当肯定以下方法会起作用:

grouped = df_2.groupby('user_id').agg({'value1': 'mean', 'value2': 'min'})
df_1 = df_1.merge(grouped, left_on='user_id', right_index=True, sort=False)

这要求
value1
value2
不在
dfu 1
中,否则会有重复的列。如果这是一个潜在的问题,请在合并之前使用
df_1=df_1.drop(columns=['value1','value2'],errors='ignore')

提供两个数据帧的示例会很有帮助,例如
df_1.head(10)
df_2.head(10)
这里的问题是摘要操作没有我需要的那么灵活——例如,所有列都必须是
.mean()
。然后只需使用
df_2.groupby('user_id',as_index=False)。mean()
grouped = df_2.groupby('user_id').agg({'value1': 'mean', 'value2': 'min'})
df_1 = df_1.merge(grouped, left_on='user_id', right_index=True, sort=False)