pandas 如何根据条件对多行求和并将结果放入另一列?

relj7zay  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(161)

我试图在 Dataframe 中查找中心= 1000且元素在范围(10,20)内的行。找到这些行后,我想从列[“1”,“2”,“3”]中复制它们的值,并将它们作为一行,其中中心= 1000且元素= 89位于列[“1C”,“2C”,“3C”]中。
我试过下面的代码,但它似乎不工作:

df.loc[(df["center"] == 1000) & (df["element"] >= 10) & (df["element"] <= 20), ["1C", "2C", "3C"]] = df.loc[ (df["center"] == 1000) & (df["element"] == 89), ["1", "2", "3"]].sum().values

因为它是函数的一部分,所以不会出错,但我不明白为什么它不能工作.
以下是示例数据集:

0   center  element 1   2   3   1C  2C  3C
1   1000    11  30  30  30  0   0   0
2   1000    12  70  70  70  0   0   0
3   1000    89  0   0   0   0   0   0
4   1001    11  5   5   5   0   0   0
5   1002    12  6   7   8   0   0   0

以下是所需的输出:

0   center  element 1   2   3   1C  2C  3C
1   1000    11  30  30  30  0   0   0
2   1000    12  70  70  70  0   0   0
3   1000    89  0   0   0   100   100   100
4   1001    11  5   5   5   0   0   0
5   1002    12  6   7   8   0   0   0
kadbb459

kadbb4591#

您可以对 Dataframe 执行以下操作得到结果:

target_rows = df.loc[(df["center"] == 1000) & (df["element"].between(10, 20))]
df.loc[(df["center"] == 1000) & (df["element"] == 89), ["1C", "2C", "3C"]] = target_rows[["1", "2", "3"]].sum().values

相关问题