熊猫数据框替换列值

时间:2020-05-09 12:28:40

标签: python 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())

什么都不值!

更新

我意识到在同一数据帧上执行替换操作会覆盖它,因此需要将其保存到另一个变量中然后进行替换。

1 个答案:

答案 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