我对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
似乎根本没有更改列中的值。有任何想法吗? 感谢。
答案 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