【问题标题】:How do I transpose dataframe in pandas without index?如何在没有索引的熊猫中转置数据框?
【发布时间】:2017-02-22 02:30:13
【问题描述】:

很确定这很简单。

我正在读取一个 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`

如何去掉顶部的索引?

【问题讨论】:

  • 重置索引然后转置:df.reset_index().T.
  • 嗯...实际上添加了两行 0 1 2。
  • 对不起,我误读了这个问题。如果您的数据框按照您在此处显示的方式构建,df.T 应该会为您提供所需的输出。也就是说,如果df.indexIndex(['a', 'b', 'c'], dtype='object') 并且df.columnsIndex(['A', 'B', 'C'], dtype='object')
  • 仅供参考,我更新了我的问题。我错过了第一列的标题为“属性”的提法。 df.columns 很好 df.index 不是,它打印出 0, 1, 2 这很有意义,然后转置就有了它。所以这就是我的问题。我从 csv 文件中读取数据,但我没有提到 0、1、2。
  • 那么df.set_index('Attribute').T就是你要找的。​​span>

标签: python pandas dataframe


【解决方案1】:

您可以先将索引设置为数据框中的第一列(或者通常是您要用作索引的列),然后转置数据框。例如,如果您要用作索引的列是'Attribute',您可以这样做:

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

或者

df.set_index('Attribute').T

【讨论】:

  • 为什么 df.set_index('Attribute').T 没有 paranteses()?不是方法吗?
【解决方案2】:

它对我有用:

>>> 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

【讨论】:

    【解决方案3】:

    如果你的索引列'Attribute'真的设置为转置前的索引,那么转置后的顶行不是第一行,而是标题行。如果您不喜欢它,我会先删除索引,然后在转置后将它们重命名为列。

    【讨论】:

      猜你喜欢
      • 2014-08-29
      • 2023-01-26
      • 2019-03-04
      • 2015-04-19
      • 2021-02-26
      • 1970-01-01
      • 2022-07-10
      相关资源
      最近更新 更多