У меня есть некоторые данные о растениях, которые выглядят (но у меня до 7 атрибутов):
Unnamed: 0 plant att_1 att_2 ...
0 0 plant_a sunlover tall
1 1 plant_b waterlover sunlover
2 2 plant_c fast growing sunlover
Я пытался использовать pandas get_dummies, например:
df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],'C': [1, 2, 3]})
pd.get_dummies(df, prefix=['col1', 'col2']):
.
C col1_a col1_b col2_a col2_b col2_c
0 1 1 0 0 1 0
1 2 0 1 1 0 0
2 3 1 0 0 0 1
Но sunlover должен быть закодирован как 1, тем не менее, он находится в att_1 или att_2. Тогда у меня будет примерно 30 фиктивных переменных вместо 7 * 30 = 210 переменных. Я попытался l oop через весь набор и добавить значение для каждого манекена:
for count, plants in enumerate(data_plants.iterrows()):
print("First", count, plants)
for attribute in plants:
print("Second", count, attribute)
Код просто печатается, потому что я видел проблему с тратой времени. Это работает, но его недостаточно для использования для 100 тыс. И более строк. Я подумал об использовании .value_counts () для получения атрибутов, а затем доступа к фиктивной переменной dataframe, чтобы обновить ее до 1, но затем я перезапишу атрибут. На данный момент я немного потерялся и у меня нет идей. Возможно, мне пришлось использовать другой пакет?
Цель будет примерно такой:
Unnamed: 0 plant att_1 att_2 sunlover waterlover tall ...
0 0 plant_a sunlover tall 1 0 1
1 1 plant_b waterlover sunlover 1 1 0
2 2 plant_c fast growing sunlover 1 0 0