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-添加了两种解决方案-用于索引和列。