Skip to content

数据赋值

Pandas 支持多种方式对数据进行赋值修改。

列赋值

python
import pandas as pd

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

# 修改整列
df['A'] = [10, 20, 30]
print(df)

# 使用标量赋值
df['B'] = 100
print(df)

# 添加新列
df['C'] = [7, 8, 9]
print(df)

行赋值

python
# 使用loc赋值
df.loc[0] = [100, 200, 300]
print(df)

# 使用iloc赋值
df.iloc[1] = [400, 500, 600]
print(df)

单个元素赋值

python
# 使用loc
df.loc[0, 'A'] = 999
print(df)

# 使用iloc
df.iloc[0, 0] = 888
print(df)

# 使用at(更快)
df.at[0, 'A'] = 777
print(df)

# 使用iat(更快)
df.iat[0, 0] = 666
print(df)

条件赋值

python
# 根据条件赋值
df.loc[df['A'] > 10, 'B'] = 0
print(df)

# 使用where
df['C'] = df['C'].where(df['C'] > 100, other=0)
print(df)

# 使用mask(与where相反)
df['C'] = df['C'].mask(df['C'] > 100, other=0)
print(df)

批量赋值

python
# 使用apply
df['A'] = df['A'].apply(lambda x: x * 2)
print(df)

# 使用map
df['B'] = df['B'].map(lambda x: x + 1)
print(df)

# 使用replace
df['A'] = df['A'].replace({666: 100, 777: 200})
print(df)

注意事项

python
# 链式赋值会产生警告,应避免
df[df['A'] > 0]['B'] = 1  # 不推荐

# 正确做法
df.loc[df['A'] > 0, 'B'] = 1  # 推荐

合理使用赋值操作,可以高效地修改和更新数据。