如何獲得 Pandas 列中元素總和
Asad Riaz
2023年1月30日
2020年3月28日
我們將介紹如何獲取 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