У меня есть два pandas DataFrame.
df1
выглядит так:
Date A B
2020-03-01 12 15
2020-03-02 13 16
2020-03-03 14 17
, а df2
, вот так:
Date C
2020-03-03 x
2020-03-01 w
2020-03-05 y
Я хочу объединить df2
в df1
так, чтобы значения превратились в столбцы. Вроде как горячая кодировка:
Date A B w x y z
2020-03-01 12 15 1 0 0 0
2020-03-02 13 16 0 0 0 1
2020-03-03 14 17 0 1 0 0
Таким образом, первая строка имеет 1 в столбце w
, потому что строка с той же датой, "2020-03-01" в df2['C']
«ш». Столбец z
предназначен для тех записей в df1
без соответствующих дат в df2
. (Извините, если я не смог объяснить это лучше. Не стесняйтесь уточнить.)
В качестве решения я подумал сначала о слиянии df1
и df2
, например:
Date A B C
2020-03-01 12 15 w
2020-03-02 13 16 -
2020-03-03 14 17 x
Затем выполните однократное кодирование, используя:
df1['w'] = (df2['C'] == 'w')*1.0
df1['y'] = (df2['C'] == 'y')*1.0
...
Но я все еще думаю о том, как кодировать первую часть, и все решение может быть даже неэффективным. Поэтому я спрашиваю, если вы знаете более эффективный способ, например, некоторую комбинацию методов DataFrame. Спасибо.