Python Pandas select 行按字符串条件然后更新相关列值

Python Pandas select rows by a string condition and then update the relevant column values

我有一个数据框:

d = pd.DataFrame({'month':[1,2,3,4,5,6,7,8], 'flavour':['strawberry1%aw','strawberry','banana','banana','strawberry','strawberry','banana1%a11','banana1%20']})

我想删除 flavour 列中 % 之后的字符串:

sep = "%"
mask = d.flavour.str.contains(sep)
d.loc[mask,'_id'].map(lambda x: x.split(sep, 1)[0])

如何确保这些值在原始数据框中得到更新?预期的最终数据框如下:

sep = "%"
mask = d.flavour.str.contains(sep)

使用 'mask' 和列名称将值更新回原始数据框 (d),如下所示:

d.loc[mask,'flavour']=d.loc[mask,'flavour'].map(lambda x: x.split(sep, 1)[0])

让我们用split

d.flavour=d.flavour.apply(lambda x :x.split('%')[0])
d
Out[111]: 
       flavour  month
0  strawberry1      1
1   strawberry      2
2       banana      3
3       banana      4
4   strawberry      5
5   strawberry      6
6      banana1      7
7      banana1      8