Как отобразить значения на основе другого столбца в pandas? - PullRequest
0 голосов
/ 31 марта 2020

Мне нужно заполнить значения NaN в столбце, но он должен основываться на другом столбце. У меня есть такой фрейм данных:

df

Id             Level           Country       Gender          Age           Model
1               0                Uk            M             20             BMW
1               1                NaN           NaN           NaN            Audi
1               2                NaN           NaN           NaN            VW
2               0                US            F             50             BMW
3               0                UK            F             40             Audi

Итак, во втором столбце есть уровни, которые как минимум описывают различные модели. Я хочу заполнить значения NaN в столбцах Country Gender и Age значением, которое находится на уровне 0. Итак, мой желаемый результат должен выглядеть следующим образом:

Id             Level           Country       Gender          Age           Model
1               0                Uk            M             20             BMW
1               1                Uk            M             20             Audi
1               2                Uk            M             20             VW
2               0                US            F             50             BMW
3               0                UK            F             40             Audi

1 Ответ

2 голосов
/ 01 апреля 2020

если уровень 0 всегда является первым для идентификатора, тогда вы можете использовать groupby.transform с first и combine_first для заполнения nan:

df_f = df.combine_first(df.groupby('Id')[['Country', 'Gender', 'Age']].transform('first'))
print (df_f)
    Age Country Gender  Id  Level Model
0  20.0      Uk      M   1      0   BMW
1  20.0      Uk      M   1      1  Audi
2  20.0      Uk      M   1      2    VW
3  50.0      US      F   2      0   BMW
4  40.0      UK      F   3      0  Audi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...