在此数据框中,我需要将“圣路易斯”更改为“圣路易斯”。这些只是一些值,但还有更多值:
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'
那么,怎么做呢?我查看了其他解决方案,但它们对我不起作用。
答案 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