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
我有一个数据框:
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