Pandas数据框替换列值

我有一个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

(0)
上一篇 20小时前
下一篇 20小时前

相关推荐

发表评论

登录后才能评论