繁体   English   中英

转置 Pandas 数据框保留索引

[英]Transpose Pandas dataframe preserving the index

转置具有以下结构的 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 的第一行应该是索引。

谢谢

我们可以使用一系列的unstack

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

假设数据是方阵(nxn),如果我正确理解问题

 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM