如何獲得 Pandas 列中元素總和

  1. 獲取 Pandas DataFrame 列和的方法
  2. groupby 的累加總和
  3. 基於其他列值的條件獲取列總和的方法

我們將介紹如何獲取 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 Column

  • Pandas 中如何獲取特定列滿足給定條件的所有行的索引
  • 如何在 Pandas 中將 DataFrame 列轉換為日期時間