Python Forum
DataFrame: To print a column value which is not null out of 5 columns - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: Data Science (https://python-forum.io/forum-44.html)
+--- Thread: DataFrame: To print a column value which is not null out of 5 columns (/thread-25051.html)



DataFrame: To print a column value which is not null out of 5 columns - mani - Mar-17-2020

Hello All,

I have an excel sheet with 6 columns: app_name,app_owner,bus_owner,it_lead,app_maintainer,last_updater.
Here column 2 to 6 are people names in the mentioned order.

For a given app_name, there can be names in one or more columns.

Here is a sample test data:

app_name,app_owner,bus_owner,it_lead,app_maintainer,last_updater
CRM,Tom,Hanks,Tim,Bob,Venkat
SAP,NaN,Carpenter,Velu,Karen,Lisa
eCRM,NaN,NaN,Mani,Pinky,Waren
mSales,NaN,NaN,NaN,Rosy,Lily
Mzone,NaN,NaN,NaN,NaN,Matt

I need to print the people name for app_name as input.
So, if value is present in app_owner then it should be printed, else check next column which is bus_owner for value and so on.

Expected output for the test data should be:

CRM,Tom
SAP,Carpenter
eCRM,Mani
mSales,Rosy
Mzone,Matt

I am trying to use panda's where function, but no luck.

Any help is very much appreciated.


RE: DataFrame: To print a column value which is not null out of 5 columns - snippsat - Mar-17-2020

The tricky part could be solved bye df.apply(lambda x: pd.Series(x.dropna().values),1)
Can do a test,and can use to_csv or to_excel get the output.
import pandas as pd
from io import StringIO

data = StringIO("""\
app_name,app_owner,bus_owner,it_lead,app_maintainer,last_updater
CRM,Tom,Hanks,Tim,Bob,Venkat
SAP,NaN,Carpenter,Velu,Karen,Lisa
eCRM,NaN,NaN,Mani,Pinky,Waren
mSales,NaN,NaN,NaN,Rosy,Lily
Mzone,NaN,NaN,NaN,NaN,Matt""")

df = pd.read_csv(data, sep=",")

df = df.apply(lambda x: pd.Series(x.dropna().values),1)
df
	0	1	2	3	4	5
0	CRM	Tom	Hanks	Tim	Bob	Venkat
1	SAP	Carpenter	Velu	Karen	Lisa	NaN
2	eCRM	Mani	Pinky	Waren	NaN	NaN
3	mSales	Rosy	Lily	NaN	NaN	NaN
4	Mzone	Matt	NaN	NaN	NaN	NaN

first_2 = df[[0, 1]]
first_2
0	CRM	Tom
1	SAP	Carpenter
2	eCRM	Mani
3	mSales	Rosy
4	Mzone	Matt

print(first_2.to_csv(header=None, index=False))
CRM,Tom
SAP,Carpenter
eCRM,Mani
mSales,Rosy
Mzone,Matt



RE: DataFrame: To print a column value which is not null out of 5 columns - mani - Mar-18-2020

Hello Snippsat,

Thank you very much for this solution. It worked perfect.
Appreciate your help.

Regards,