pandas数据帧应用方法使用lambda函数更改o/p



我正在使用一个pandas DataFrame,它包含两列,一列用于ImageID,另一列用于其标签

train_data.head()
Image_id  Label
0      id_004wknd7qd.jpg  blast
1  id_004wknd7qd_rgn.jpg  blast
2      id_005sitfgr2.jpg  brown
3  id_005sitfgr2_rgn.jpg  brown
4      id_00stp9t6m6.jpg  blast

现在有两种类型的图像RGBRGN,第一行是RGB,第二行是RGN。我想将它们中的每一个拆分为两个不同的数据帧。如果我尝试以下行来选择RGB,它会产生以下输出:

train_rgbs = train_data.apply(lambda x : x if 'rgn' not in x.Image_id else None, axis = 1).dropna()
train_rgbs.head()
Image_id    Label
0  id_004wknd7qd.jpg    blast
2  id_005sitfgr2.jpg    brown
4  id_00stp9t6m6.jpg    blast
6  id_012zxewnhx.jpg    blast
8  id_0186qwq2at.jpg  healthy

但如果我更改了lambda函数if语句,则输出将完全更改

train_rgns = train_data.apply(lambda x : x if 'rgn' in x.Image_id else None, axis = 1).dropna()
train_rgns.head()
1    Image_id    id_004wknd7qd_rgn.jpg
Label       ...
3    Image_id    id_005sitfgr2_rgn.jpg
Label       ...
5    Image_id    id_00stp9t6m6_rgn.jpg
Label       ...
7    Image_id    id_012zxewnhx_rgn.jpg
Label       ...
9    Image_id    id_0186qwq2at_rgn.jpg
Label       ...
dtype: object

为什么选择RGN时,输出会发生变化,不会像第一种情况那样输出数据帧。提前感谢

train_rgbs = train_data[train_data.Image_id.apply(lambda x: 'rgn' not in x)]
train_rgns = train_data[train_data.Image_id.apply(lambda x: 'rgn' in x)]

最新更新