迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

如何获得 Pandas 列中元素总和

作者:迹忆客 最近更新:2024/04/22 浏览次数:

我们将介绍如何获取 Pandas DataFrame 列的元素总和,以及使用 groupby 计算累积和的方法,以及基于其他列值数据的条件来得到列和的方法。


获取 Pandas DataFrame 列和的方法

首先,我们使用 NumPy 库创建一个随机数组,然后使用 sum() 函数获取每个列的总和。

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randint(0, 10, size=(10, 4)), columns=list("1234"))
print(df)
Total = df["1"].sum()
print("Column 1 sum:", Total)
Total = df["2"].sum()
print("Column 2 sum:", Total)
Total = df["3"].sum()
print("Column 3 sum:", Total)
Total = df["4"].sum()
print("Column 4 sum:", Total)

如果运行此代码,你将获得以下输出(你的情况下值可能不同),

   1  2  3  4
0  2  2  3  8
1  9  4  3  1
2  8  5  6  0
3  9  5  7  4
4  2  7  3  7
5  9  4  1  3
6  6  7  7  3
7  0  4  2  8
8  0  6  6  4
9  5  8  7  2
Column 1 sum: 50
Column 2 sum: 52
Column 3 sum: 45
Column 4 sum: 40

groupby 的累加总和

我们可以使用 groupby 方法来获得累计和。考虑以下带有 DataFrameFruitSale 列的 DataFrame

import pandas as pd

df = pd.DataFrame(
    {
        "Date": ["08/09/2018", "10/09/2018", "08/09/2018", "10/09/2018"],
        "Fruit": ["Apple", "Apple", "Banana", "Banana"],
        "Sale": [34, 12, 22, 27],
    }
)

如果我们要计算每个水果的累计销售总额,对于每个日期我们可以这样计算,

import pandas as pd

df = pd.DataFrame(
    {
        "Date": ["08/09/2018", "10/09/2018", "08/09/2018", "10/09/2018"],
        "Fruit": ["Apple", "Apple", "Banana", "Banana"],
        "Sale": [34, 12, 22, 27],
    }
)

print(df.groupby(by=["Fruit", "Date"]).sum().groupby(level=[0]).cumsum())

运行上述代码后,我们将获得以下输出,该输出显示每个日期的水果累积总和:

Fruit  Date         Sale
Apple  08/09/2018    34
       10/09/2018    46
Banana 08/09/2018    22
       10/09/2018    49
        

基于其他列值的条件获取列总和的方法

此方法提供了在给定条件为 True 时获取总和的功能,以及在条件为 False 时用给定值替换总和的功能。考虑以下代码

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randn(5, 3), columns=list("xyz"))

df["sum"] = df.loc[df["x"] > 0, ["x", "y"]].sum(axis=1)

df["sum"].fillna(0, inplace=True)
print(df)

在上面的代码中,我们将新列总和添加到 DataFrame 中,这是第一列 ['x','y'] 的和,如果 ['x'] 大于 1,否则我们将和替换为 0

运行代码后,我们将获得以下输出(根据你的情况,值可能会更改)。

          x         y         z       sum
0 -1.067619  1.053494  0.179490  0.000000
1 -0.349935  0.531465 -1.350914  0.000000
2 -1.650904  1.534314  1.773287  0.000000
3  2.486195  0.800890 -0.132991  3.287085
4  1.581747 -0.667217 -0.182038  0.914530

上一篇:如何将 Pandas DataFrame 列标题获取为列表

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便