如果我有这些数据
data = {'f1':['A','B','B','A'],'f2':['X','Y','Z','Z']}
df = pd.DataFrame(data)
feat_1 = pd.get_dummies(df['f1'])
feat_2 = pd.get_dummies(df['f2'])
在 pandas 中进行 feat_1 和 feat_2 之间的乘法运算的快捷方法是什么?
feat_1
A B
0 1 0
1 0 1
2 0 1
3 1 0
feat_2
X Y Z
0 1 0 0
1 0 1 0
2 0 0 1
3 0 0 1
期望结果:feat_1 * feat_2
AX AY AZ BX BY BZ
0 1 0 0 0 0 0
1 0 0 0 0 1 0
2 0 0 0 0 0 1
3 0 0 1 0 0 0
最佳答案
通过在 get_dummies
之后使用 reindex
col=pd.MultiIndex.from_product([df.f1.unique(),df.f2.unique()]).map(''.join)
df.apply(''.join,1).str.get_dummies().reindex(columns=col,fill_value=0)
Out[605]:
AX AY AZ BX BY BZ
0 1 0 0 0 0 0
1 0 0 0 0 1 0
2 0 0 0 0 0 1
3 0 0 1 0 0 0
关于python - pandas 中的数据框成对乘法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51431327/