python-使用pandas get_dummies后是否可以连接列?

python-使用pandas get_dummies后是否可以连接列?,python,pandas,dataframe,Python,Pandas,Dataframe,这是我的例子 doc_num doc1 doc2 A B U123 A C U123 A D U124 B C U126 B D U126 我有用处 pd.get_dummies(df.doc_num).sort_index(level=0) 这样做一个向量矩阵 U123 U124 U126 doc1 doc2 A B 1 0 0 A C

这是我的例子

         doc_num
doc1 doc2 
 A    B    U123
 A    C    U123
 A    D    U124
 B    C    U126
 B    D    U126
我有用处

pd.get_dummies(df.doc_num).sort_index(level=0)
这样做一个向量矩阵

           U123 U124 U126
doc1 doc2  
 A    B     1    0    0
 A    C     1    0    0
 A    D     0    1    0
 B    C     0    0    1
 B    D     0    0    1
       U123 U124 U126
doc_3  
 A,B     1    0    0
 A,C     1    0    0
 A,D     0    1    0
 B,C     0    0    1
 B,D     0    0    1
但是我想在doc1和doc2中创建一个新的列,以查看这样的预期结果

           U123 U124 U126
doc1 doc2  
 A    B     1    0    0
 A    C     1    0    0
 A    D     0    1    0
 B    C     0    0    1
 B    D     0    0    1
       U123 U124 U126
doc_3  
 A,B     1    0    0
 A,C     1    0    0
 A,D     0    1    0
 B,C     0    0    1
 B,D     0    0    1

可能吗?提前感谢您

我相信您需要加入两个级别的
多索引
,设置索引名称:

并在必要时为列添加:

df1 = df1.reset_index()
print (df1)
  doc_3  U123  U124  U126
0   A,B     1     0     0
1   A,C     1     0     0
2   A,D     0     1     0
3   B,C     0     0     1
4   B,D     0     0     1

或者首先从
多索引
提取列,如果需要索引:

df1 = pd.get_dummies(df.doc_num).sort_index(level=0).reset_index()
df1.index =  df1.pop('doc1') + ',' + df1.pop('doc2')
df1 = df1.rename_axis('doc_3')
print (df1)
       U123  U124  U126
doc_3                  
A,B       1     0     0
A,C       1     0     0
A,D       0     1     0
B,C       0     0     1
B,D       0     0     1

或用于新列:

df1 = pd.get_dummies(df.doc_num).sort_index(level=0).reset_index()
df1.insert(0, 'doc_3',  df1.pop('doc1') + ',' + df1.pop('doc2'))

print (df1)
  doc_3  U123  U124  U126
0   A,B     1     0     0
1   A,C     1     0     0
2   A,D     0     1     0
3   B,C     0     0     1
4   B,D     0     0     1

除了@jezrael的答案之外,您还需要一个向量矩阵,所以:

df1=pd.get_dummies(df.doc_num)
df1.insert(0, 'doc_3',  df['doc1'] + ',' + df['doc2'])
print(df1.set_index('doc_3'))
或:

所有输出:

       U123  U124  U126
doc_3                  
A,B       1     0     0
A,C       1     0     0
A,D       0     1     0
B,C       0     0     1
B,D       0     0     1

现在您确实获得了所需的输出。

您可以尝试下面的代码。它将两列合并为一列。另外,在它们之间加上“,”

df['doc_3'] = df['doc1'] + "," + df['doc2']

然后您可以删除前两列

@U9 Forward-添加了两种解决方案-用于索引和列。