在 Pandas DataFrame 中兩列相減

Manav Narula 2023年1月30日 2020年12月31日
  1. 使用 __getitem__ 語法([])來做 Pandas 中的兩列相減
  2. 在 Pandas 中使用函式做兩列相減
  3. 在 Pandas 中使用 assign() 方法做兩列相減
在 Pandas DataFrame 中兩列相減

Pandas 可以處理非常大的資料集,並且有多種功能和操作可以應用到資料中。

其中一個簡單的操作是對兩列進行減法,並將結果儲存在一個新的列中,這將在本教程中討論。這個簡單的任務可以通過多種方式來完成。我們將計算下面 DataFrame 中'a''d'列之間的差。

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]],
                  columns = ['a','b','c','d'])

print(df)

輸出:

    a  b   c   d
0  10  6   7   8
1   1  9  12  14
2   5  8  10   6

使用 __getitem__ 語法([])來做 Pandas 中的兩列相減

兩列相減的最簡單方法是訪問所需的列,並使用 __getitem__ 語法([])建立一個新列。例如:

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]],
                  columns = ['a','b','c','d'])

df['d - a'] = df['d'] - df['a']

print(df)

輸出:

    a  b   c   d  d - a
0  10  6   7   8     -2
1   1  9  12  14     13
2   5  8  10   6      1

在 Pandas 中使用函式做兩列相減

我們可以很容易地在 Pandas 中建立一個兩列相減的函式,並使用 apply() 函式將其應用到 DataFrame 的指定列中。我們將為 apply() 函式提供引數 axis,並將其設定為 1,表示該函式應用於列。

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]],
                  columns = ['a','b','c','d'])

def x(a,b):
    return a - b

df['d - a']  = df.apply(lambda f: x(f['d'],f['a']), axis=1)

print(df) 

輸出:

    a  b   c   d  d - a
0  10  6   7   8     -2
1   1  9  12  14     13
2   5  8  10   6      1

由於列的減法是一個比較簡單的操作,所以我們可以直接使用 lambda 關鍵字在 apply() 函式中建立簡單的單行函式。

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]],
                  columns = ['a','b','c','d'])

df['d - a'] = df.apply(lambda x: x['d'] - x['a'], axis = 1)

print(df)

輸出:

    a  b   c   d  d - a
0  10  6   7   8     -2
1   1  9  12  14     13
2   5  8  10   6      1

在 Pandas 中使用 assign() 方法做兩列相減

DataFrame assign() 方法用於在執行某些操作後向 DataFrame 中新增一列。它返回一個新的 DataFrame,其中包含所有原始的和新的列。下面的例子將展示如何使用 assign() 方法減去兩列。

import pandas as pd

df = pd.DataFrame([[10,6,7,8],
                   [1,9,12,14],
                   [5,8,10,6]],
                  columns = ['a','b','c','d'])

df = df.assign(d_minus_a = df['d'] - df['a'])

print(df)

輸出:

    a  b   c   d  d_minus_a
0  10  6   7   8         -2
1   1  9  12  14         13
2   5  8  10   6          1
Author: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

相關文章 - Pandas DataFrame