我在熊猫中加载了以下数据框。
SELECT *
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
print(pandaDf)
我正在尝试将多行中的值转换为其列,以便输出如下所示:
所需的输出:
id col1 col2 col3
12a a b d
22b d a b
33c c a b
我尝试在value列中添加value = 1并使用数据透视表
id a b c d
12a 1 1 0 1
22b 1 1 0 0
33c 1 1 1 0
但是,结果数据帧是一个多级索引,并且pandaDf.pivot()方法不允许多个列值。
请告知我如何使用单级索引的输出来实现此目的。
感谢您抽出宝贵时间阅读本文档,对于在发布问题时遇到任何格式错误,我深表歉意。我仍在学习正确的stackoverflow语法。
答案 0 :(得分:3)
您可以使用一键编码解决此问题。
这是一种实现pd.get_dummies
以及将多索引展平和sum
的方法:
df1 = df.set_index('id')
df_out = pd.get_dummies(df1)
df_out.columns = df_out.columns.str.split('_', expand=True)
df_out = df_out.sum(level=1, axis=1).reset_index()
print(df_out)
输出:
id a c d b
0 12a 1 0 1 1
1 22b 1 0 1 1
2 33c 1 1 0 1
答案 1 :(得分:2)
使用get_dummies
pd.get_dummies(df.set_index('id'),prefix='', prefix_sep='').sum(level=0,axis=1)
Out[81]:
a c d b
id
12a 1 0 1 1
22b 1 0 1 1
33c 1 1 0 1