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')
多列计算选apply()。
单列转换选map()。
复杂条件逻辑选np.where()。
通过合理选择方法并处理数据类型,可高效完成DataFrame列的添加与计算。