заполнить NaN, используя столбцы другого фрейма данных - PullRequest
1 голос
/ 04 октября 2019

Я заметил, что большинство областей не присутствует в столбце областей, и они присутствуют в столбце города, поэтому, не зная города, я хочу заполнить пин-коды в df1

У меня есть два кадра данных

Df1 = 
City          area          Pincode
Pune        Bibwewadi       159963
Mumbai      Bandra(W)       123456
Bibwewadi           
Bandra(E)
Badlapur     Badlapur       752147
Bhiwandi     Bhiwandi       784512
Df2 = 
Area        Pincode
Bibwewadi   159963
Badlapur    752147
Parvati     784596
Baner       411007
Bandra(E)   326598

Так как в df1 некоторые области находятся в столбце city, я хочу заполнить значения NaN столбца pin-кода в df1 с помощью df2, используя pandas

Ожидаемый результат

df1=
City          area          Pincode
Pune        Bibwewadi       159963
Mumbai      Bandra(W)       123456
Bibwewadi                   159963
Bandra(E)                   326598
Badlapur     Badlapur       752147
Bhiwandi     Bhiwandi       784512

1 Ответ

1 голос
/ 04 октября 2019

Вы можете использовать pandas.Series.map , эта опция может быть полезна, если значения не NaN values.:

c=df1['Pincode'].isnull()|df1['Pincode'].eq('')
df1=df1.replace('Bandra – E','Bandra(E)')
df1.loc[c,'Pincode']=df1.loc[c,'City'].map(df2.set_index('Area')['Pincode'])
print(df1)


        City       area   Pincode
0       Pune  Bibwewadi  159963.0
1     Mumbai  Bandra(W)  123456.0
2  Bibwewadi       None  159963.0
3  Bandra(E)       None  326598.0
4   Badlapur   Badlapur  752147.0
5   Bhiwandi   Bhiwandi  784512.0

или Series.fillna

df1=df1.replace('Bandra – E','Bandra(E)').set_index('City')
df1['Pincode']=df1['Pincode'].fillna(df2.set_index('Area')['Pincode'])
df1.reset_index(inplace=True)

Примечание:

Проверьте, какой тип пропущенных значений имеется в кадре данных, а также метки столбцов и замененное значение: 'Bandra – E'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...