Заполнение значений NaN на основе значений строки и столбца - PullRequest
0 голосов
/ 27 ноября 2018

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

City       Longitude     Latitude
new mexico  1.94          2.34
berlin       2.44         5.33
london       1.1           2.44
new mexico    nan          nan
tokyo         2.2          3.3
berlin        nan           nan
new york      2.5           1.44
dakota         2             5.4
jakarta        3.4           4.5
london         nan           nan

Некоторые города перечислены несколько раз, но в повторяющихся городах пропущены значения.Я хочу заполнить значения nan для некоторых городов столбцами долготы и широты, используя значения тех же городов, я пробовал использовать ffil и обратную заливку, но это не сработало, поскольку пропущенные значения не следуют шаблону.

1 Ответ

0 голосов
/ 27 ноября 2018

Вы можете отсортировать по столбцам Longitude и Latitude, чтобы NaN s находились внизу, затем используйте groupby и ffill, и, наконец, выполните повторную сортировку по индексу:

df.sort_values(['Longitude', 'Latitude']).groupby('City').ffill().sort_index()

         City  Longitude  Latitude
0  new mexico       1.94      2.34
1      berlin       2.44      5.33
2      london       1.10      2.44
3  new mexico       1.94      2.34
4       tokyo       2.20      3.30
5      berlin       2.44      5.33
6    new york       2.50      1.44
7      dakota       2.00      5.40
8     jakarta       3.40      4.50
9      london       1.10      2.44

Или, что еще лучше, просто отсортируйте сначала по City, затем Longitude и Latitude и используйте ffill без группировки:

df.sort_values(['City','Longitude', 'Latitude']).ffill().sort_index()

         City  Longitude  Latitude
0  new mexico       1.94      2.34
1      berlin       2.44      5.33
2      london       1.10      2.44
3  new mexico       1.94      2.34
4       tokyo       2.20      3.30
5      berlin       2.44      5.33
6    new york       2.50      1.44
7      dakota       2.00      5.40
8     jakarta       3.40      4.50
9      london       1.10      2.44
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...