【问题标题】:Pandas - Use values from rows with equal values in iterationPandas - 在迭代中使用具有相等值的行中的值
【发布时间】:2020-01-08 12:33:34
【问题描述】:

如果过去已经回答了这个问题,我想道歉,我不知道如何表达这个问题。 对于空间中的每个点,我有一个带有 3d 坐标和带有标量值(在这种情况下为磁场)的行的数据框。我将半径计算为每个点与 (x,y)=(0,0) 处的线的距离。唯一的半径和 z 值被传输到一个新的数据帧中。现在我想通过对 3d 系统中具有相等半径的所有点进行平均来计算体积中每个点 (Z,R) 的标量值。

目前我正在迭代所有唯一的 Z 和 R 值。它可以工作,但速度非常慢。

df 是原始数据帧,dfn 是新数据帧,一开始只包含 R 和 Z 值的唯一组合。

for r in dfn.R.unique():
    for z in df.Z.unique():
        dfn.loc[(df["R"]==r)&(df["Z"]==z), "B"] = df["B"][(df["R"]==r)&(df["Z"]==z)].mean()

有没有办法通过编写一行代码来加快这一速度,其中给 pandas 提供了从原始数据帧中获取所有行的命令,其中 Z 和 R 具有根据新数据帧中每一行的值?

提前感谢您的帮助。

【问题讨论】:

    标签: python pandas dataframe iteration


    【解决方案1】:

    试试groupby!!!

    看起来您可以通过以下方式实现: df[['R', 'Z', 'B']].groupby(['R', 'Z']).mean()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      • 1970-01-01
      • 2022-01-12
      相关资源
      最近更新 更多