2 回答
![?](http://img1.sycdn.imooc.com/54584f8f00019fc002200220-100-100.jpg)
TA贡献1906条经验 获得超3个赞
最好使用小写值,因此您不必匹配所有变体。这可以通过 来实现str.lower()。
用于str.strip()删除前导和尾随空格
import pandas as pd
# test dataframe
trainData = pd.DataFrame({'F10': ['White ', 'White', 'Black', ' Asian-Pac-Islander', ' White ', ' Black']})
# strip, lower and map
trainData['F10_numeric'] = trainData['F10'].str.strip().str.lower().map({'white': 0, 'black': 1, 'asian-pac-islander': 2})
# display(trainData)
F10 F10_numeric
0 White 0
1 White 0
2 Black 1
3 Asian-Pac-Islander 2
4 White 0
5 Black 1
前面的代码不会修复该F10列,它只是针对映射进行调整。
下面将更新F10,然后将值映射到数字。
# fix F10
trainData['F10'] = trainData['F10'].str.strip().str.lower()
# map on the fixed F10 column
trainData['F10_numeric'] = trainData['F10'].map({'white': 0, 'black': 1, 'asian-pac-islander': 2})
# display(trainData)
F10 F10_numeric
0 white 0
1 white 0
2 black 1
3 asian-pac-islander 2
4 white 0
5 black 1
![?](http://img1.sycdn.imooc.com/5333a0350001692e02200220-100-100.jpg)
TA贡献1786条经验 获得超13个赞
如果您想更改数据框中的实际列,则必须使用以下命令:
trainData['F10'].replace({' White': 0, ' Black': 1, ' Asian-Pac-Islander': 2, 'white': 0, 'White': 0, 'Black': 1, 'Asian-Pac-Islander': 2, " White": 0, " Black": 1, " Asian-Pac-Islander": 2, "white": 0, "White": 0, "Black": 1, "Asian-Pac-Islander": 2}, inplace=True)
请注意,我使用了inplace=True
一个不需要的更好的替代方案inplace=True
是:
trainData['F10'] = trainData['F10'].str.strip().str.lower().replace({'white': 0, 'black': 1, 'asian-pac-islander': 2})
添加回答
举报