I Want the value in city column to be filled with first word of venue column
I tried using
df.city.fillna(value=df.venue.str.split()[0])
but it taking first row values to fill
Thank you in advance
Advertisement
Answer
From your DataFrame
:
>>> import pandas as pd >>> from io import StringIO >>> df = pd.read_csv(StringIO(""" id,city,venue 2343242,NaN,Sharjah Cricket Stadium 4354534,NaN,Dubai Internationnl Cricket Stadium 4564564,NaN,Dubai Internationnl Cricket Stadium 3454355,NaN,Sharjah Cricket Stadium 5676575,NaN,Sharjah Cricket Stadium""")) >>> df id city venue 0 2343242 NaN Sharjah Cricket Stadium 1 4354534 NaN Dubai Internationnl Cricket Stadium 2 4564564 NaN Dubai Internationnl Cricket Stadium 3 3454355 NaN Sharjah Cricket Stadium 4 5676575 NaN Sharjah Cricket Stadium
After the split()
you used, we can use map
to assign the first list element to the NaN
values in the City
column as expected :
>>> df['city'] = df['city'].fillna(value=df['venue'].str.split().map(lambda x: x[0])) >>> df id city venue 0 2343242 Sharjah Sharjah Cricket Stadium 1 4354534 Dubai Dubai Internationnl Cricket Stadium 2 4564564 Dubai Dubai Internationnl Cricket Stadium 3 3454355 Sharjah Sharjah Cricket Stadium 4 5676575 Sharjah Sharjah Cricket Stadium
EDIT:
Even shorter, thanks to @HenryEcker :
>>> df['city'] = df['city'].fillna(value=df['venue'].str.split().str[0]) >>> df id city venue 0 2343242 Sharjah Sharjah Cricket Stadium 1 4354534 Dubai Dubai Internationnl Cricket Stadium 2 4564564 Dubai Dubai Internationnl Cricket Stadium 3 3454355 Sharjah Sharjah Cricket Stadium 4 5676575 Sharjah Sharjah Cricket Stadium