如何获得 Pandas 列中元素总和
我们将介绍如何获取 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
方法来获得累计和。考虑以下带有 DataFrame
,Fruit
和 Sale
列的 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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。