1
У меня естьпанды get_dummies с одинаковыми/одинаковыми именами столбцов
In [122]: d=pandas.DataFrame({'d_1':['a','x'],'d_2':['x','y']})
In [123]: d
Out[123]:
d_1 d_2
0 a x
1 x y
Я хочу:
a x y
0 1 1 0
1 0 1 1
Я не хочу использовать
In [139]: pandas.get_dummies(d)
Out[139]:
d_1_a d_1_x d_2_x d_2_y
0 1.0 0.0 1.0 0.0
1 0.0 1.0 0.0 1.0
Поскольку d_1_x и d_2_x считаются различными по этой функции, что требует слишком большого объема памяти для моего приложения.
Я все же хочу использовать get_dummies, потому что это быстро; Итак, я попытался переименовать столбцы и применить get_dummies
In [124]: d.columns=['d' for el in d.columns]
In [141]: d
Out[141]:
d d
0 a x
1 x y
In [151]: pandas.get_dummies(d)
Out[151]:
d_('d',) d_('d',)
0 1.0 1.0
1 1.0 1.0
Спасибо! Просто для пояснения это будет 'd.apply (lambda x: pd.Series (1, index = x), axis = 1) .fillna (0)'? – user86895
Правда. Я оставил имя параметра для простоты, но должно быть лучше явно указать имя параметра. – Psidom
Что вы хотите, чтобы результат был в этом случае? Если вы хотите, чтобы результат был подсчетом 'x, y и т. Д. ', Вы можете сделать' d.apply (lambda x: x.value_counts(), 1) .fillna (0) '. – Psidom