pandas.DataFrame.transpose #

数据框。转置( * args , copy = False ) [来源] #

转置索引和列。

通过将行写为列来反映 DataFrame 的主对角线,反之亦然。该属性T是方法的访问器 transpose()

参数
*args元组,可选

因与 NumPy 兼容而被接受。

复制bool,默认 False

转置后是否复制数据,即使对于具有单一数据类型的 DataFrame 也是如此。

请注意,混合 dtype DataFrame 或具有任何扩展类型的 DataFrame 始终需要副本。

笔记

copy关键字将改变 pandas 3.0 中的行为 。默认情况下会启用Copy-on-Write ,这意味着所有带有 copy关键字的方法都将使用惰性复制机制来推迟复制并忽略copy关键字。 copy关键字将在 pandas 的未来版本中删除

您已经可以通过启用写入时复制来获得未来的行为和改进pd.options.mode.copy_on_write = True

返回
数据框

转置的 DataFrame。

也可以看看

numpy.transpose

排列给定数组的维度。

笔记

转置具有混合数据类型的 DataFrame 将产生具有对象数据类型的同构 DataFrame 。在这种情况下,总是会制作数据的副本。

例子

具有同质数据类型的方形 DataFrame

>>> d1 = {'col1': [1, 2], 'col2': [3, 4]}
>>> df1 = pd.DataFrame(data=d1)
>>> df1
   col1  col2
0     1     3
1     2     4
>>> df1_transposed = df1.T  # or df1.transpose()
>>> df1_transposed
      0  1
col1  1  2
col2  3  4

当原始 DataFrame 中的 dtype 是同质的时,我们会得到具有相同 dtype 的转置 DataFrame:

>>> df1.dtypes
col1    int64
col2    int64
dtype: object
>>> df1_transposed.dtypes
0    int64
1    int64
dtype: object

具有混合数据类型的非方形 DataFrame

>>> d2 = {'name': ['Alice', 'Bob'],
...       'score': [9.5, 8],
...       'employed': [False, True],
...       'kids': [0, 0]}
>>> df2 = pd.DataFrame(data=d2)
>>> df2
    name  score  employed  kids
0  Alice    9.5     False     0
1    Bob    8.0      True     0
>>> df2_transposed = df2.T  # or df2.transpose()
>>> df2_transposed
              0     1
name      Alice   Bob
score       9.5   8.0
employed  False  True
kids          0     0

当 DataFrame 具有混合数据类型时,我们会得到一个具有对象数据类型的转置 DataFrame:

>>> df2.dtypes
name         object
score       float64
employed       bool
kids          int64
dtype: object
>>> df2_transposed.dtypes
0    object
1    object
dtype: object