Мне нужна помощь, чтобы преобразовать уникальные значения из нескольких столбцов, например столбцов a1 и a2, в новые столбцы, а затем присвоить значения из столбцов b1 и b2 этим вновь созданным столбцам соответственно.
Например, если у меня есть кадр данных df, как показано ниже:
import pandas as pd
import numpy as np
df = pd.DataFrame({'a1':['q','w','e','r'], 'a2':['s','e','q','u'], 'b1':[1,2,3,4], 'b2':[5,6,7,8],})
print(df)
a1 a2 b1 b2
0 q s 1 5
1 w e 2 6
2 e q 3 7
3 r u 4 8
Уникальными значениями столбцов a1 и a2 являются ['e', 'q', 'r', 's', 'u', 'w'].
np.unique(df.loc[:,['a1','a2']].values)
array(['e', 'q', 'r', 's', 'u', 'w'], dtype=object)
Я хотел бы преобразовать df в новый фрейм данных df1, как показано ниже:
print(df1)
e q r s u w
0 0 1 0 5 0 0
1 6 0 0 0 0 2
2 3 7 0 0 0 0
3 0 0 4 0 8 0
Обратите внимание, что 'q' и 's' появляются в первой строке df, поэтому 1 (из столбца b1) и 5 (из столбца b2) назначены столбцам q и s в кадре данных df1, а остальные столбцы равны 0 .
Я мог бы использовать функции melt и dcast в R для достижения этой цели, однако я не уверен, как это сделать в Python.
Спасибо.