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)