我有一个pandas数据框架,我需要替换列的值,所以我尝试了以下方法,但没有达到预期的效果。
dict_by_nationality = {
250:0, #'Some-Nation locality',
260:0, #'Some-Nation locality'
270:0, #'Some-Nation locality'
280:0, #'Some-Nation locality'
290:0, #'Some-Nation locality'
440:0, #'Some-Nation locality'
450:0, #'Some-Nation locality'
460:0, #'Some-Nation locality'
310:0, #'Other-Nation locality'
510:2, #'Other place',
520:2, #'Other place',
530:2, #'Other place',
}
# dat['my column'].apply(dict_by_nationality.get)
# dat['my column'].map(dict_by_nationality).fillna(dat['my column'])
dat['my column'].replace({310: 0}, inplace=True)
print(dat.head())
得到None值!
更新
我意识到在同一个数据框上做替换是会覆盖它的,有必要将它保存到另一个变量中,然后再做替换。
解决方案:
解决办法
试着使用以下(df[col].str.strip().str.replace()
),因为这将会处理你的数据框架中出现未识别的空白的情况。
dat['my column'].str.strip().str.replace('310', '0')
我想你的其中一行注释出来的行应该可以正常工作。试着用我为这个目的做的假数据做以下的工作。
建议的解决方案
df[col].map(dictionary).fillna(df[col])
例子
df = pd.DataFrame({'a': list('abcde'), 'b': list('abacd')})
df.a.map({'a': 'A', 'b': 'B'}).fillna(df.a)
产量:
0 A
1 B
2 c
3 d
4 e
本文来自投稿,不代表实战宝典立场,如若转载,请注明出处:https://www.shizhanbaodian.com/40310.html