Заполните NaN соответствующим значением строки в Python - PullRequest
1 голос
/ 11 марта 2020

У меня есть следующий фрейм данных:

      Region                   Date         Confirmed   Deaths  Recovered   Latitude    Longitude
0     Mainland China Anhui     2020-01-22   1.0         0.0     0.0         NaN         NaN
1     Mainland China Beijing   2020-01-22   14.0        0.0     0.0         NaN         NaN
2     Mainland China Chongqing 2020-01-22   6.0         0.0     0.0         NaN         NaN
3     Mainland China Fujian    2020-01-22   1.0         0.0     0.0         NaN         NaN
4     Mainland China Gansu     2020-01-22   0.0         0.0     0.0         NaN         NaN
2825  Mainland China Anhui     2020-03-01   990.0       6.0     873.0       31.8257     117.2264
567   Mainland China Anhui     2020-02-05   1.0         0.0     0.0         NaN         NaN
2951  Mainland China Anhui     2020-03-02   990.0       6.0     917.0       31.8257     117.2264
4273  Mainland China Fujian    2020-03-07   296.0       1.0     295.0       26.0789     117.9874
4541  Mainland China Fujian    2020-03-07   296.0       1.0     295.0       26.0789     117.9874

Я хочу заполнить значения NaN в широте и долготе соответствующими значениями в зависимости от региона.

Я пытался:

df = df.groupby(['Region']).ffill()
df

Но это только дало мне это:

        Date        Confirmed   Deaths  Recovered   Latitude    Longitude
0       2020-01-22  1.0         0.0     0.0         NaN         NaN
1       2020-01-22  14.0        0.0     0.0         NaN         NaN
2       2020-01-22  6.0         0.0     0.0         NaN         NaN
3       2020-01-22  1.0         0.0     0.0         NaN         NaN
4       2020-01-22  0.0         0.0     0.0         NaN         NaN

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 11 марта 2020

Я бы просто использовал тот факт, что max игнорирует значения NaN, так что этого должно быть достаточно:

df.loc[:,['Latitude', 'Longitude']] = df.groupby('Region')[['Latitude', 'Longitude']].transform('max')
1 голос
/ 11 марта 2020

Вы можете использовать метод обратной и прямой заливки для сгруппированных элементов.

df['Latitude'] = df.groupby('Region')['Latitude'].fillna(method='backfill').fillna(method='pad')
df['Longitude'] = df.groupby('Region')['Longitude'].fillna(method='backfill').fillna(method='pad')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...