pandas.DataFrame.transpose#

DataFrame.transpose(*args, copy=<no_default>)[源代码][源代码]#

转置索引和列。

通过将行写为列并将列写为行,沿其主对角线反映 DataFrame。属性 T 是访问方法 transpose() 的工具。

参数:
*argstuple, 可选

为了与NumPy兼容而被接受。

复制bool, 默认为 False

是否在转置后复制数据,即使是具有单一数据类型的 DataFrame。

请注意,对于混合数据类型的 DataFrame 或包含任何扩展类型的 DataFrame,总是需要复制。

备注

copy 关键字将在 pandas 3.0 中更改行为。写时复制 将默认启用,这意味着所有带有 copy 关键字的方法将使用延迟复制机制来推迟复制并忽略 copy 关键字。copy 关键字将在未来版本的 pandas 中被移除。

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

自 3.0.0 版本弃用.

返回:
DataFrame

转置后的 DataFrame。

参见

numpy.transpose

置换给定数组的维度。

备注

使用混合数据类型的 DataFrame 进行转置将产生一个具有 object 数据类型的同质 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 是同质的时,我们得到一个转置的 DataFrame,其 dtype 相同:

>>> 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,其数据类型为 object

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