如何根据Fruit列的值填充Pandas DataFrame的Color列?
如何根据Pandas DataFrame的某列值填充另一列?
你的初始DataFrame代码如下:
import pandas as pd d = {'Fruit': ['Apple', 'Orange', 'Pear', 'Peach'], 'Color': ['','','','']} df = pd.DataFrame(data=d)
要根据Fruit列的值填充Color列,不建议用普通if语句逐行判断(Pandas更适配向量化操作,循环判断在数据量大时效率极低),推荐以下几种高效方案:
方法1:字典映射 + map()函数
这是最常用的方案,先定义水果与颜色的对应字典,再通过map()批量完成映射:
# 自定义水果-颜色映射规则,可按需修改 fruit_color_map = { 'Apple': 'Red', 'Orange': 'Orange', 'Pear': 'Green', 'Peach': 'Pink' } # 批量填充Color列 df['Color'] = df['Fruit'].map(fruit_color_map)
如果存在字典未覆盖的水果,map()会返回NaN,可通过fillna()统一处理:
df['Color'] = df['Fruit'].map(fruit_color_map).fillna('Unknown')
方法2:使用replace()函数
replace()也可基于字典直接替换列值,效果与map()一致:
df['Color'] = df['Fruit'].replace(fruit_color_map)
方法3:条件索引loc(适合少量规则)
如果映射规则不多,也可以用loc逐个设置条件:
df.loc[df['Fruit'] == 'Apple', 'Color'] = 'Red' df.loc[df['Fruit'] == 'Orange', 'Color'] = 'Orange' df.loc[df['Fruit'] == 'Pear', 'Color'] = 'Green' df.loc[df['Fruit'] == 'Peach', 'Color'] = 'Pink'
执行任意方法后,最终的DataFrame会变为:
| Fruit | Color |
|---|---|
| Apple | Red |
| Orange | Orange |
| Pear | Green |
| Peach | Pink |
内容的提问来源于stack exchange,提问作者Aragorn64
相关产品推荐
相关产品推荐

