我正在使用一个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
现在有两种类型的图像RGB和RGN,第一行是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)]