首頁 > 後端開發 > Python教學 > pandas 中語法 `df[&#column&#] = expression` 的解釋

pandas 中語法 `df[&#column&#] = expression` 的解釋

Patricia Arquette
發布: 2025-01-10 09:13:46
原創
197 人瀏覽過

Explanation of the syntax `df[

Pandas df['column'] = expression 語法詳解:用於在 Pandas DataFrame (df) 中建立修改賦值列。讓我們逐步分解,從基礎到進階。


基礎篇

1. 建立新欄位

  • 當 DataFrame 中不存在某一列時,向 df['column'] 賦值會建立一個新欄位。

  • 範例:

      import pandas as pd
      df = pd.DataFrame({'A': [1, 2, 3]})
      print(df)
      # 输出:
      #    A
      # 0  1
      # 1  2
      # 2  3
    
      # 创建一个新列 'B',所有值都设置为 0
      df['B'] = 0
      print(df)
      # 输出:
      #    A  B
      # 0  1  0
      # 1  2  0
      # 2  3  0
    登入後複製

2. 修改現有欄位

  • 如果列已存在,賦值會取代其內容。

  • 範例:

      df['B'] = [4, 5, 6]  # 替换列 'B' 中的值
      print(df)
      # 输出:
      #    A  B
      # 0  1  4
      # 1  2  5
      # 2  3  6
    登入後複製

中級篇

3. 基於表達式的賦值

  • 可以基於計算或轉換向列賦值。

  • 範例:

      df['C'] = df['A'] + df['B']  # 创建列 'C' 为 'A' 和 'B' 的和
      print(df)
      # 输出:
      #    A  B   C
      # 0  1  4   5
      # 1  2  5   7
      # 2  3  6   9
    登入後複製

4. 使用條件賦值

  • 可以使用 Pandas 的布林索引進行條件賦值。

  • 範例:

      df['D'] = df['A'].apply(lambda x: 'Even' if x % 2 == 0 else 'Odd')
      print(df)
      # 输出:
      #    A  B   C     D
      # 0  1  4   5   Odd
      # 1  2  5   7  Even
      # 2  3  6   9   Odd
    登入後複製

5. 在表達式中使用多列

  • 可以在一個表達式中使用多列進行更複雜的計算。

  • 範例:

      df['E'] = (df['A'] + df['B']) * df['C']
      print(df)
      # 输出:
      #    A  B   C     D    E
      # 0  1  4   5   Odd   25
      # 1  2  5   7  Even   49
      # 2  3  6   9   Odd   81
    登入後複製

高級篇

6. 向量化操作

  • 向列賦值可以使用向量化操作來提高效能。

  • 範例:

      df['F'] = df['A'] ** 2 + df['B'] ** 2  # 快速向量化计算
      print(df)
      # 输出:
      #    A  B   C     D    E   F
      # 0  1  4   5   Odd   25  17
      # 1  2  5   7  Even   49  29
      # 2  3  6   9   Odd   81  45
    登入後複製

7. 使用 np.where 進行條件邏輯賦值

  • 可以使用 NumPy 來進行條件賦值。

  • 範例:

      import numpy as np
      df['G'] = np.where(df['A'] > 2, 'High', 'Low')
      print(df)
      # 输出:
      #    A  B   C     D    E   F     G
      # 0  1  4   5   Odd   25  17   Low
      # 1  2  5   7  Even   49  29   Low
      # 2  3  6   9   Odd   81  45  High
    登入後複製

8. 使用外部函數賦值

  • 基於應用於行或列的自訂函數向列賦值。

  • 範例:

      def custom_function(row):
          return row['A'] * row['B']
    
      df['H'] = df.apply(custom_function, axis=1)
      print(df)
      # 输出:
      #    A  B   C     D    E   F     G   H
      # 0  1  4   5   Odd   25  17   Low   4
      # 1  2  5   7  Even   49  29   Low  10
      # 2  3  6   9   Odd   81  45  High  18
    登入後複製

9. 鍊式操作

  • 可以將多個操作連結起來,讓程式碼更簡潔。

  • 範例:

      df['I'] = df['A'].add(df['B']).mul(df['C'])
      print(df)
      # 输出:
      #    A  B   C     D    E   F     G   H    I
      # 0  1  4   5   Odd   25  17   Low   4   25
      # 1  2  5   7  Even   49  29   Low  10   49
      # 2  3  6   9   Odd   81  45  High  18   81
    登入後複製

10. 一次賦值多列

  • 使用 assign() 一次呼叫建立或修改多列。

  • 範例:

      df = df.assign(
          J=df['A'] + df['B'],
          K=lambda x: x['J'] * 2
      )
      print(df)
      # 输出:
      #    A  B   C     D    E   F     G   H    I   J   K
      # 0  1  4   5   Odd   25  17   Low   4   25   5  10
      # 1  2  5   7  Even   49  29   Low  10   49   7  14
      # 2  3  6   9   Odd   81  45  High  18   81   9  18
    登入後複製

專家篇

11. 動態列賦值

  • 基於外部輸入動態建立列名。

  • 範例:

      columns_to_add = ['L', 'M']
      for col in columns_to_add:
          df[col] = df['A'] + df['B']
      print(df)
    登入後複製

12. 使用外部資料賦值

  • 基於外部 DataFrame 或字典向列賦值。

  • 範例:

      mapping = {1: 'Low', 2: 'Medium', 3: 'High'}
      df['N'] = df['A'].map(mapping)
      print(df)
      # 输出:
      #    A  B   C     D    E   F     G   H    I   J   K      N
      # 0  1  4   5   Odd   25  17   Low   4   25   5  10    Low
      # 1  2  5   7  Even   49  29   Low  10   49   7  14  Medium
      # 2  3  6   9   Odd   81  45  High  18   81   9  18   High
    登入後複製

13. 效能最佳化:

  • 賦值時,使用 Pandas 的內建函數(apply,向量化操作)比 Python 循環具有更好的效能。

總結

df['column'] = expression 文法是 Pandas 的核心功能,用途廣泛。它允許:

  • 新增、修改和操作 DataFrame 中的欄位。
  • 執行複雜的計算,包括基於條件的邏輯和多列轉換。
  • 鍊式操作和動態產生新列。

這使得 Pandas 成為強大的資料操作和分析庫。

以上是pandas 中語法 `df[&#column&#] = expression` 的解釋的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板