Data Wrangling

高效向Pandas DataFrame添加默认值列

Spread the love

向Pandas DataFrame添加新列是一项基本的数据操作任务。通常,您需要使用默认值初始化这些新列。本文探讨了在Pandas中实现此目的的两种有效方法:pandas.DataFrame.assign()pandas.DataFrame.insert(),重点介绍了它们的差异和最佳用例。

目录

使用pandas.DataFrame.assign()添加列

assign()方法提供了一种简洁明了的方法来添加新列。重要的是,它返回一个新的DataFrame,而不会更改原始DataFrame。这种函数式方法促进了不变性,并有助于防止意外修改。


import pandas as pd

# 示例DataFrame
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
print("原始DataFrame:n", df)

# 添加一个值为0的新的列'C'
df_new = df.assign(C=0)
print("n添加列'C'后的DataFrame:n", df_new)
print("n原始DataFrame保持不变:n", df)

#一次添加多列
df_new = df.assign(C=0, D='default')
print("n添加多列后的DataFrame:n", df_new)

添加具有条件默认值的列

对于需要根据现有数据设置条件默认值的更复杂场景,可以将assign()与其他Pandas特性结合使用。这提供了更大的控制和灵活性。


import pandas as pd
import numpy as np

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

# 添加一个值为NaN的列'C'作为占位符,然后有条件地赋值
df['C'] = np.nan
df.loc[df['A'] > 1, 'C'] = 10
df.loc[df['A'] <= 1, 'C'] = 20

print("n添加并有条件地设置列'C'后的DataFrame:n", df)

使用pandas.DataFrame.insert()添加列

insert()方法允许精确控制列的位置。与assign()不同,它会就地修改DataFrame。这意味着原始DataFrame会被直接更改。


import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

# 在位置1(索引1)添加一个值为0的新列'C'
df.insert(1, 'C', 0)
print("n插入列'C'后的DataFrame:n", df)

因为insert()会就地修改DataFrame,所以如果您需要保留原始DataFrame,则务必使用.copy()创建副本。

选择正确的方法

assign()insert()的选择取决于您的需求。assign()通常因为它函数式且不变的特性而更受欢迎,尤其是在处理复杂逻辑或添加多列时。当精确的列位置至关重要且就地修改可以接受时,insert()很有用。始终考虑就地修改的影响,以避免意外后果。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注