我如何跨多个列制作熊猫框架值

时间:2018-07-13 00:02:43

标签: python-3.x pandas dataframe

我在熊猫中加载了以下数据框。

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语法。

2 个答案:

答案 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