返回
Pandas 中创建新列的终极指南:从内置函数到循环
python
2024-03-13 12:28:51
在Pandas中使用其他列创建新列的终极指南
简介
在数据分析领域,常常需要根据现有数据创建新列。Pandas作为Python中强大的数据处理库,提供了多种创建新列的方法,包括使用内置函数、自定义函数和循环。
使用内置函数
Pandas内置了许多函数,可以方便地创建新列,包括:
df['new_column'] = df['existing_column'] + 1
: 创建新列new_column
,其值为existing_column
加1。df['new_column'] = df['existing_column'].fillna(0)
: 创建新列new_column
,其值为existing_column
中的非空值,其余值为0。df['new_column'] = df['existing_column'].astype('category')
: 创建新列new_column
,其值为existing_column
的类别类型。
使用自定义函数
如果内置函数无法满足需求,可以使用自定义函数创建更复杂的列。自定义函数可以按行或按列操作数据帧。
按行操作
使用apply()
函数可以按行操作数据帧。apply()
函数接受一个函数作为参数,该函数将应用于数据帧的每一行。
def my_function(row):
return row['existing_column1'] + row['existing_column2']
df['new_column'] = df.apply(my_function, axis=1)
按列操作
使用transform()
函数可以按列操作数据帧。transform()
函数接受一个函数作为参数,该函数将应用于数据帧的每一列。
def my_function(col):
return col + 1
df['new_column'] = df.transform(my_function)
使用循环
在某些情况下,使用循环创建新列可能更方便。
df['new_column'] = []
for i in range(len(df)):
df['new_column'].append(df['existing_column1'][i] + df['existing_column2'][i])
实际案例
在实际问题中,可以使用自定义函数或循环创建新列。以下示例使用自定义函数创建新列Race
,该列根据给定的规则确定种族分类:
import pandas as pd
def race_classification(row):
if row['ERI_Hispanic'] == 1:
return "Hispanic"
elif row['ERI_AmerInd_AKNatv'] + row['ERI_Asian'] + row['ERI_Black_Afr.Amer'] + row['ERI_HI_PacIsl'] + row['ERI_White'] > 1:
return "Two or More"
elif row['ERI_AmerInd_AKNatv'] == 1:
return "A/I AK Native"
elif row['ERI_Asian'] == 1:
return "Asian"
elif row['ERI_Black_Afr.Amer'] == 1:
return "Black/AA"
elif row['ERI_HI_PacIsl'] == 1:
return "Haw/Pac Isl."
elif row['ERI_White'] == 1:
return "White"
df['Race'] = df.apply(race_classification, axis=1)
结论
掌握了创建新列的方法,你可以轻松地从现有数据中提取有价值的见解,并丰富数据帧的功能。通过本文的深入讲解,你可以根据自己的需要选择最合适的方法。
常见问题解答
-
如何按行对数据帧进行操作?
可以使用apply()
函数按行对数据帧进行操作。 -
如何按列对数据帧进行操作?
可以使用transform()
函数按列对数据帧进行操作。 -
何时应该使用内置函数?
当可以使用内置函数满足需求时,应优先使用内置函数,因为它们通常效率更高。 -
何时应该使用自定义函数?
当内置函数无法满足需求时,可以使用自定义函数创建更复杂的列。 -
何时应该使用循环?
在某些情况下,使用循环创建新列可能更方便,例如需要对每个元素进行复杂的计算时。