Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

pandas data frame apply method change the o/p using lambda function

I’m working with a pandas DataFrame that contains two columns one for the ImageID and the other one for its labels

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

Now there are two types of images RGBs and RGNs, the first row is an RGB and the second row is an RGN. I want to split each of them into two different data frames. if I tried the following line to select the RGBs it produces the following output:

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

but if I changed the lambda function if statement the output completely change

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

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

Why When selecting the RGNs the output changes and does not output a data frame as in the first case.
Thanks in Advance

>Solution :

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)]
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading