Разрешить дополнительные пропущенные значения между строками - PullRequest
1 голос
/ 08 ноября 2019

У меня есть df, который выглядит следующим образом

    Day ID              ID_2    AS  D   E    AS1    D1  E1  
29  72  Participant 1   PS 6 42 NaN NaN NaN  NaN    NaN NaN
35  78  Participant 1   NaN     yes 3   no   2      no  2   
49  22  Participant 2   PS 1 89 NaN NaN NaN  NaN    NaN NaN
85  18  Participant 2   NaN     yes 3   no   2      no  2

Я ищу способ добавить значение столбца ID_2 во все строки, где ID соответствует (т. Е. Для Participant 1заполните значения NaN значениями из другой строки, где ID = Participant 1). Я рассмотрел использование combine, но, похоже, это не работает для данного конкретного случая.

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

    Day ID              ID_2    AS  D   E    AS1    D1  E1  
29  72  Participant 1   PS 6 42 yes 3   no   2      no  2
35  78  Participant 1   PS 6 42 yes 3   no   2      no  2   
49  22  Participant 2   PS 1 89 yes 3   no   2      no  2
85  18  Participant 2   PS 1 89 yes 3   no   2      no  2

или

    Day ID              ID_2    AS  D   E    AS1    D1  E1  
29  72  Participant 1   PS 6 42 NaN NaN NaN  NaN    NaN NaN
35  78  Participant 1   PS 6 42 yes 3   no   2      no  2   
49  22  Participant 2   PS 1 89 NaN NaN NaN  NaN    NaN NaN
85  18  Participant 2   PS 1 89 yes 3   no   2      no  2

Ответы [ 2 ]

3 голосов
/ 08 ноября 2019

Я думаю, вы могли бы попробовать

df.ID_2 = df.groupby('ID').ID_2.ffill()

# 29    PS 6 42
# 35    PS 6 42
# 49    PS 1 89
# 85    PS 1 89
0 голосов
/ 08 ноября 2019

Не проверено, но что-то вроде этого должно работать - не могу скопировать ваш df в мой браузер.

print(df)
    Day             ID     ID_2   AS    D    E  AS1   D1   E1
0   72  Participant_1  PS_6_42  NaN  NaN  NaN  NaN  NaN  NaN
1   78  Participant_1      NaN  yes  3.0   no  2.0   no  2.0
2   22  Participant_2  PS_1_89  NaN  NaN  NaN  NaN  NaN  NaN
3   18  Participant_2      NaN  yes  3.0   no  2.0   no  2.0
df2 = df.set_index('ID').groupby('ID').transform('ffill').transform('bfill').reset_index()

print(df2)
   ID  Day     ID_2   AS  D   E  AS1  D1  E1
0  Participant_1   72  PS_6_42  yes  3  no    2  no   2
1  Participant_1   78  PS_6_42  yes  3  no    2  no   2
2  Participant_2   22  PS_1_89  yes  3  no    2  no   2
3  Participant_2   18  PS_1_89  yes  3  no    2  no   2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...