我有一个熊猫数据框,我需要替换列值。 因此,我尝试了以下操作,但未按预期工作:
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())
什么都不值!
我意识到在同一数据帧上执行替换操作会覆盖它,因此需要将其保存到另一个变量中然后进行替换。
答案 0 :(得分:1)
请尝试使用以下(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