尝试修改Pandas DataFrame值时出现错误

时间:2019-09-08 17:53:17

标签: python-3.x pandas dataframe

在此数据框中,我需要将“圣路易斯”更改为“圣路易斯”。这些只是一些值,但还有更多值:

shoot[shoot['city'] == 'Saint Louis'].iloc[:5,0:3]

    Incident Date     state         city
119     24-Aug-17  Missouri  Saint Louis
139     13-May-19  Missouri  Saint Louis
217      1-Jun-17  Missouri  Saint Louis
220     18-Jun-17  Missouri  Saint Louis
228     25-Apr-18  Missouri  Saint Louis

我尝试过这种方式,但出现错误:

shoot.loc[shoot.city == 'Saint Louis', :]['city'] = 'St. Louis'

__main__:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

该消息说要这样做,但是对于许多人来说,这当然是不切实际的:

shoot.iloc[119,2] = 'St. Louis'

那么,怎么做呢?我查看了其他解决方案,但它们对我不起作用。

1 个答案:

答案 0 :(得分:1)

使用套用方法:

    Incident    Date    state   city
0   119 24-Aug-17   Missouri    Saint Louis
1   139 13-May-19   Missouri    Saint Louis
2   139 13-May-19   Missouri    city1

代码:

df['city'] = df.apply(lambda x: ['St. Louis' if x == 'Saint Louis' else x for x in df['city']])

结果:

Incident    Date    state   city
0   119 24-Aug-17   Missouri    St. Louis
1   139 13-May-19   Missouri    St. Louis
2   139 13-May-19   Missouri    city1