Python怎么向DataFrame添加新的一列_pandas DataFrame新增列的方法

Python怎么向DataFrame添加新的一列_pandas DataFrame新增列的方法
最新回答
你滋润了

2023-07-02 07:41:54

向Pandas DataFrame添加新列的核心方法包括直接赋值、insert()和assign(),同时需注意数据类型匹配及使用函数生成列值。以下是具体操作指南:

一、基础添加方法
  • 直接赋值最简单的方式,直接通过列名赋值。语法为df['新列名'] = 值,值可以是列表、Series或标量。

    示例:import pandas as pddf = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})df['C'] = [5, 6] # 添加列表df['D'] = 10 # 添加标量(所有行值为10)

  • insert()函数可指定插入位置,语法为df.insert(loc, column, value, allow_duplicates=False)。

    参数说明:

    loc:插入位置的索引(从0开始)。

    column:新列名。

    value:列值。

    allow_duplicates:是否允许重复列名(默认False)。

    示例:df.insert(1, 'E', [7, 8]) # 在索引1处插入列'E'

  • assign()函数返回新DataFrame,不修改原数据,支持一次性添加多列。语法为df.assign(新列名1=值1, 新列名2=值2)。

    示例:new_df = df.assign(F=[9, 10], G=['x', 'y']) # 添加两列并返回新DataFrame

二、数据类型处理
  • 类型转换添加列前需确保数据类型匹配,使用astype()转换。

    示例:df['H'] = pd.Series(['1', '2']).astype(int) # 字符串转整数

  • 混合类型与缺失值

    混合类型(如数字+字符串)会被推断为object类型,可能影响性能,建议统一类型。

    缺失值(NaN)会导致列类型推断为float,可用fillna()填充:df['I'] = pd.Series([1, None]).fillna(0) # 填充缺失值为0

三、函数生成列值
  • apply()函数按行或列应用函数,适合多列计算。语法为df.apply(函数, axis=0或1)。

    示例:计算两列和:def calculate_sum(row): return row['A'] + row['B']df['J'] = df.apply(calculate_sum, axis=1)

  • map()函数对单列值映射转换,语法为df['列名'].map(函数或字典)。

    示例:计算平方:df['K'] = df['A'].map(lambda x: x2)

  • np.where()函数根据条件选择值,语法为np.where(条件, 值1, 值2)。

    示例:条件赋值:import numpy as npdf['L'] = np.where(df['A'] > 1, 'High', 'Low')

四、方法选择建议
  • 直接赋值:简单场景,快速添加单列。
  • insert():需控制列顺序时使用。
  • assign():需保留原DataFrame或添加多列时优先。
  • 函数生成值

    多列计算选apply()。

    单列转换选map()。

    复杂条件逻辑选np.where()。

通过合理选择方法并处理数据类型,可高效完成DataFrame列的添加与计算。