python - 对每一行的列值求和

标签 python pandas dataframe

我会根据一列对该数据框的每一行求和。

输入数据框:

    a   b
0   red 5
1   red 8
2   red 2
3   red 4
4   red 1

我使用此代码对值求和 sumcol = df['b'].sum() 但是对整个列求和我会在新列中为每一行计算一个值 -1。

预期数据框:

    a   b   c
0   red 5   15
1   red 8   7
2   red 2   5
3   red 4   1
4   red 1   0

最佳答案

使用 apply lambdaaxis=1
x.name 将为您提供每一行的当前索引。使用 x.name+1: 简单地为每一行制作切片:这意味着获取下面的所有行。

df["c"] = df.apply(lambda x: df.loc[x.name+1:,"b"].sum(),axis=1)

print(df)

         a  b   c
    0   red 5   15
    1   red 8   7
    2   red 2   5
    3   red 4   1
    4   red 1   0

如果你想得到 summation/number_of_values 这看起来像 mean() 那么尝试:

df["c"] = df.apply(lambda x: df.loc[x.name+1:,"b"].mean(),axis=1)
print(df)

         a  b    c
    0   red 5   3.750000
    1   red 8   2.333333
    2   red 2   2.500000
    3   red 4   1.000000
    4   red 1   NaN

关于python - 对每一行的列值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67670063/

相关文章:

python - 读取 Pandas 中以空格分隔的字符串数据

pandas - 如果数据框列值匹配字典键,检查不同的列是否匹配字典值

Python DataFrame - 根据列的值应用不同的计算

python - 如何减少 for 循环创建字典的运行时间

python - 计算 2D numpy 数组中 False 值的最有效(和 pythonic)方法?

python - Pandas merge_asof 问题 : one-to-multiple merge

python - 成对距离和残差计算优化

python - 如何将多个列值连接到 Pandas 数据框中的单个列

pandas - 从 Pandas 数据框中的列标题中删除双引号

python - 每两个交替元素的 Numpy 切片二维数组