我在转换具有以下结构的Pandas DataFrame时遇到问题:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 foo 0 4 0 0 0 0 0 0 0 0 14 1 0 1 0 0 0 bar 0 6 0 0 4 0 5 0 0 0 0 0 0 0 1 0 0 lorem 1 3 0 0 0 1 0 0 2 0 3 0 1 2 1 1 0 ipsum 1 2 0 1 0 0 1 0 0 0 0 0 4 0 6 0 0 dolor 1 2 4 0 1 0 0 0 0 0 2 0 0 1 0 0 2 ..
具有索引:
foo,bar,lorem,ipsum,dolor,...
这基本上是一个术语-文档矩阵,其中行是术语,而标题(0-16)是文档索引。 由于我的目的是对文档而不是术语进行聚类,因此我想转置数据框,并使用它来在文档之间进行余弦距离计算。 但是当我转置:
pd.transpose()
我得到:
foo bar ... pippo lorem 0 0 0 ... 0 0 1 4 6 ... 0 0 2 0 0 ... 0 0 3 0 0 ... 0 0 4 0 4 ... 0 0 .. 16 0 2 ... 0 1
具有索引:
0 , 1 , 2 , 3 , ... , 15, 16
我想要什么? 我正在寻找一种方法来使此操作保留数据帧索引。基本上,新df的第一行应该是索引。
谢谢
答案 0 :(得分:0)
我们可以使用一系列的卸货
df2 = df.unstack().to_frame().unstack(1).droplevel(0,axis=1)
print(df2)
foo bar lorem ipsum dolor
0 0 0 1 1 1
1 4 6 3 2 2
2 0 0 0 0 4
3 0 0 0 1 0
4 0 4 0 0 1
5 0 0 1 0 0
6 0 5 0 1 0
7 0 0 0 0 0
8 0 0 2 0 0
9 0 0 0 0 0
10 14 0 3 0 2
11 1 0 0 0 0
12 0 0 1 4 0
13 1 0 2 0 1
14 0 1 1 6 0
15 0 0 1 0 0
16 0 0 0 0 2
答案 1 :(得分:0)
假设数据是方阵(n x n),并且如果我理解正确的话
df = pd.DataFrame([[0, 4,0], [0,6,0], [1,3,0]],
index =['foo', 'bar', 'lorem'],
columns=[0, 1, 2]
)
df_T = pd.DataFrame(df.values.T, index=df.index, columns=df.columns)