首页 > 后端开发 > Python教程 > pandas 中语法 `df[&#column&#] = expression` 的解释

pandas 中语法 `df[&#column&#] = expression` 的解释

Patricia Arquette
发布: 2025-01-10 09:13:46
原创
129 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板