Заполнение nan одного столбца значениями другого Python - PullRequest
0 голосов
/ 21 января 2019

У меня есть набор данных, который был объединен для заполнения пропущенных значений друг от друга.

Проблема в том, что у меня есть несколько столбцов с пропущенными данными, которые я сейчас хочу заполнитьзначения, которые не пропущены.

Объединенный набор данных выглядит следующим образом для input :

Name         State       ID       Number_x      Number_y       Op_x       Op_y
Johnson      AL          1        1             nan            1956       nan
Johnson      AL          1        nan           nan            1956       nan
Johnson      AL          2        1             nan            1999       nan
Johnson      AL          2        0             nan            1999       nan
Debra        AK          1A       0             nan            2000       nan
Debra        AK          1B       nan           20             nan        1997
Debra        AK          2        nan           10             nan        2009
Debra        AK          3        nan           1              nan        2008
.
.

Что бы я хотел для вывод таков:

Name         State       ID       Number_x      Number_y     Op_x       Op_y
Johnson      AL          1        1             1            1956       1956
Johnson      AL          2        1             1            1999       1999
Johnson      AL          2        0             0            1999       1999
Debra        AK          1A       0             0            2000       2000
Debra        AK          1B       20            20           1997       1997
Debra        AK          2        10            10           2009       2009
Debra        AK          3        1             1            2008       2008
.
.

Итак, я хочу, чтобы все nan значения были заменены соответствующими значениями в их столбцах - сопоставьте Number_x с Number_y и Op_x сOp_y.

Следует отметить, что при наличии двух идентичных идентификаторов иногда их значения будут отличаться;например, Johnson с ID = 2, у которого разные номера, но одинаковые операционные значения.Я хочу сохранить их, потому что мне нужно исследовать их подробнее.

Кроме того, если в строке есть два пропущенных значения для Number_x и Number_y, я хочу удалить эту строку - как Johnson с Number_x и Number_y отсутствуют как значение nan.

1 Ответ

0 голосов
/ 21 января 2019

давайте сделаем groupby с axis =1

df.groupby(df.columns.str.split('_').str[0],1).first().dropna(subset=['Number','Op'])
   ID     Name  Number      Op State
0   1  Johnson     1.0  1956.0    AL
2   2  Johnson     1.0  1999.0    AL
3   2  Johnson     0.0  1999.0    AL
4  1A    Debra     0.0  2000.0    AK
5  1B    Debra    20.0  1997.0    AK
6   2    Debra    10.0  2009.0    AK
7   3    Debra     1.0  2008.0    AK
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...