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
:
JavaScript
x
18
18
1
>>> import pandas as pd
2
>>> from io import StringIO
3
4
>>> df = pd.read_csv(StringIO("""
5
id,city,venue
6
2343242,NaN,Sharjah Cricket Stadium
7
4354534,NaN,Dubai Internationnl Cricket Stadium
8
4564564,NaN,Dubai Internationnl Cricket Stadium
9
3454355,NaN,Sharjah Cricket Stadium
10
5676575,NaN,Sharjah Cricket Stadium"""))
11
>>> df
12
id city venue
13
0 2343242 NaN Sharjah Cricket Stadium
14
1 4354534 NaN Dubai Internationnl Cricket Stadium
15
2 4564564 NaN Dubai Internationnl Cricket Stadium
16
3 3454355 NaN Sharjah Cricket Stadium
17
4 5676575 NaN Sharjah Cricket Stadium
18
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 :
JavaScript
1
9
1
>>> df['city'] = df['city'].fillna(value=df['venue'].str.split().map(lambda x: x[0]))
2
>>> df
3
id city venue
4
0 2343242 Sharjah Sharjah Cricket Stadium
5
1 4354534 Dubai Dubai Internationnl Cricket Stadium
6
2 4564564 Dubai Dubai Internationnl Cricket Stadium
7
3 3454355 Sharjah Sharjah Cricket Stadium
8
4 5676575 Sharjah Sharjah Cricket Stadium
9
EDIT:
Even shorter, thanks to @HenryEcker :
JavaScript
1
9
1
>>> df['city'] = df['city'].fillna(value=df['venue'].str.split().str[0])
2
>>> df
3
id city venue
4
0 2343242 Sharjah Sharjah Cricket Stadium
5
1 4354534 Dubai Dubai Internationnl Cricket Stadium
6
2 4564564 Dubai Dubai Internationnl Cricket Stadium
7
3 3454355 Sharjah Sharjah Cricket Stadium
8
4 5676575 Sharjah Sharjah Cricket Stadium
9