返回

Pandas 中创建新列的终极指南:从内置函数到循环

python

在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)

结论

掌握了创建新列的方法,你可以轻松地从现有数据中提取有价值的见解,并丰富数据帧的功能。通过本文的深入讲解,你可以根据自己的需要选择最合适的方法。

常见问题解答

  1. 如何按行对数据帧进行操作?
    可以使用apply()函数按行对数据帧进行操作。

  2. 如何按列对数据帧进行操作?
    可以使用transform()函数按列对数据帧进行操作。

  3. 何时应该使用内置函数?
    当可以使用内置函数满足需求时,应优先使用内置函数,因为它们通常效率更高。

  4. 何时应该使用自定义函数?
    当内置函数无法满足需求时,可以使用自定义函数创建更复杂的列。

  5. 何时应该使用循环?
    在某些情况下,使用循环创建新列可能更方便,例如需要对每个元素进行复杂的计算时。