如何在pandas中转置没有索引的数据框?

61

我很确定这很简单。

我正在阅读一个csv文件,并有数据框:

Attribute    A   B   C
a            1   4   7
b            2   5   8
c            3   6   9

我想进行转置以获取

Attribute    a   b   c
A            1   2   3
B            4   5   6
C            7   8   9

然而,当我执行df.T时,它的结果是

             0   1   2 
Attribute    a   b   c
A            1   2   3
B            4   5   6
C            7   8   9`
如何去掉页面顶部的索引?

3
重置索引,然后转置:df.reset_index().T - Abdou
额...这实际上添加了两行0 1 2。 - user2237511
1
抱歉,我误读了问题。如果您的数据框结构如您在这里展示的那样,df.T 将会得到您所需的输出。也就是说,如果 df.indexIndex(['a', 'b', 'c'], dtype='object'),而 df.columnsIndex(['A', 'B', 'C'], dtype='object') - Abdou
我更新了我的问题。我错过了提到第一列有一个名为“Attribute”的标题。df.columns没问题,但df.index不行,它会打印出0、1、2,这是转置后的结果。所以这就是我的问题所在。我从CSV文件中读取数据,但我没有在那里提到0、1、2。 - user2237511
7
df.set_index('Attribute').T 是您要找的内容。 - Abdou
耶!没错,成功了!谢谢你!想把它作为答案发布,这样我就可以接受它了吗?我会更新问题,说明我正在从csv文件中读取它。谢谢! - user2237511
3个回答

73

您可以先将数据框的索引设置为第一列(或通常情况下,您想要用作索引的列),然后转置数据框。例如,如果您想要使用作为索引的列是'Attribute',则可以执行以下操作:

df.set_index('Attribute',inplace=True)
df.transpose()

或者
df.set_index('Attribute').T

为什么 df.set_index('Attribute').T 没有括号?它不是一个方法吗? - Cina

15

对我而言它起作用:

>>> data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
>>> df = pd.DataFrame(data, index=['a', 'b', 'c'])
>>> df.T
   a  b  c
A  1  2  3
B  4  5  6
C  7  8  9

0
如果您的索引列“Attribute”在转置之前确实设置为索引,则转置后的顶行不是第一行,而是标题行。如果您不喜欢它,我建议您首先删除索引,然后在转置后将它们重命名为列。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接