python - Pandas - 组合 df.loc 进行多项操作?

标签 python pandas pandas-groupby

有没有一种方法可以执行一次 df.loc 查找,然后对行子集执行多个操作?

这就是动机。我有 2 个数据框,其中包含相同用户的数据。我正在循环 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,但同时分配两个值吗?

最佳答案

您可以对齐索引,然后使用就地 pd.DataFrame.update :

df_1 = df_1.set_index('user_id')
df_1.update(df_2.groupby('user_id')[['value_1', 'value_2']].mean())

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

关于python - Pandas - 组合 df.loc 进行多项操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52819672/

相关文章:

Python - 优化内存使用,遗传算法

用于生成正则表达式的 Python 库

python - 使用 ATLAS 或 OpenBLAS 的 Numpy?

python - Pandas groupby 顺序值

python - 将函数应用于 pandas groupby 数据框中的所有列

python - TensorFlow 模型损失为 0

python - 如何填写行中给定条件的列的平均值

python - 如何将 csv 格式的数字数据读入 Pandas

python - 如何获取 pandas 系列的最后一列

python - 在 pandas groupby 之后合并 idx 和 agg 结果