Pandas категорическая переменная с отсутствующими данными - PullRequest
0 голосов
/ 16 ноября 2018

Предположим, у меня есть этот фрейм данных:

dfdic = {"col1": ['azul', 'amarillo', 'amarillo', np.nan], "col2": [4, 5, 8, 10]}
df = pd.DataFrame(dfdic)

Я хочу преобразовать поле col1 в фиктивные переменные.Я могу сделать это следующим образом:

pd.get_dummies(df, columns=['col1']).head()

, что дает

    col2    col1_amarillo   col1_azul
0   4.0     0               1
1   5.0     1               0
2   8.0     1               0
3   10      0               0

NaN в col1 заменено двумя нулями в фиктивных переменных.Это имеет смысл, потому что он говорит, что экземпляр не принадлежит ни к одной из категорий.Однако, как я могу заменить эти нули на NaN, чтобы я мог иметь

    col2    col1_amarillo   col1_azul
0   4.0     0               1
1   5.0     1               0
2   8.0     1               0
3   10      NaN             NaN

1 Ответ

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

mask + isnull

Вы можете использовать mask, чтобы сделать выбранные столбцы пустыми в зависимости от другой серии.

df.iloc[:, 1:] = df.iloc[:, 1:].mask(df['col2'].isnull())

print(df)

   col2  col1_amarillo  col1_azul
0   4.0            0.0        1.0
1   5.0            1.0        0.0
2   8.0            1.0        0.0
3   NaN            NaN        NaN
...