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

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

Patricia Arquette
Patricia Arquette原創
2025-01-10 09:13:46176瀏覽

Explanation of the syntax `df[

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


基礎篇

1. 建立新欄位

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

  • 範例:

    <code class="language-python">  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</code>

2. 修改現有欄位

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

  • 範例:

    <code class="language-python">  df['B'] = [4, 5, 6]  # 替换列 'B' 中的值
      print(df)
      # 输出:
      #    A  B
      # 0  1  4
      # 1  2  5
      # 2  3  6</code>

中級篇

3. 基於表達式的賦值

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

  • 範例:

    <code class="language-python">  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</code>

4. 使用條件賦值

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

  • 範例:

    <code class="language-python">  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</code>

5. 在表達式中使用多列

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

  • 範例:

    <code class="language-python">  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</code>

高級篇

6. 向量化操作

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

  • 範例:

    <code class="language-python">  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</code>

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

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

  • 範例:

    <code class="language-python">  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</code>

8. 使用外部函數賦值

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

  • 範例:

    <code class="language-python">  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</code>

9. 鍊式操作

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

  • 範例:

    <code class="language-python">  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</code>

10. 一次賦值多列

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

  • 範例:

    <code class="language-python">  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</code>

專家篇

11. 動態列賦值

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

  • 範例:

    <code class="language-python">  columns_to_add = ['L', 'M']
      for col in columns_to_add:
          df[col] = df['A'] + df['B']
      print(df)</code>

12. 使用外部資料賦值

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

  • 範例:

    <code class="language-python">  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</code>

13. 效能最佳化:

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

總結

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

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

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

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn