使用dict重新映射pandas数据帧列

时间:2016-07-04 11:24:29

标签: python pandas dataframe

我对python很新,所以如果这很明显的话,请耐心等待。

我在数据框dff中有一个列'age',包含值1到66.每个值对应字典中的一个键,di,我正在尝试替换值中的值列与字典中的相应值。

我可以为单个值执行此操作,例如:

dff['age'] = dff['age'].replace('1', di.get('1'))

但我想为所有66个值做这件事。我试过这个:

i = 1
while i <= 66:
    i = str(i)
    dff['age'] = dff['age'].replace(i, di.get(i))
    i = int(i)
    i = i + 1

似乎根本没有更改列中的值。有任何想法吗? 感谢。

1 个答案:

答案 0 :(得分:0)

我认为.replace()会做得更好。如果找不到特定匹配,则.map()会填充nans。纯粹取决于所需的输出

dff['age'] = dff['age'].replace(di)

例如

dff = pd.DataFrame(['a', 'b', 'c', 'd', 'a'], columns=['age'])

df['age'].replace({'a': '10-25', 'b': '50-60'})
0    10-25
1    50-60
2        c
3        d
4    10-25
Name: age, dtype: object

.map()将引入nan

dff['age'].map({'a': '10-25', 'b': '50-60'})
0    10-25
1    50-60
2      NaN
3      NaN
4    10-25
Name: age, dtype: object