Skip to main content
`Ctrl`+`K`

# pandas.DataFrame.transpose

DataFrame.transpose(*args, copy=<no_default>)

  Transpose index and columns.

  Reflect the DataFrame over its main diagonal by writing rows as columns and vice-versa. The property `T` is an accessor to the method `transpose()`.

  Parameters:
    *args tuple, optional

      Accepted for compatibility with NumPy. See NumPy compatibility kwargs for more.

    copy bool, default False

      This keyword is now ignored; changing its value will have no impact on the method.

      Note that a copy is always required for mixed dtype DataFrames, or for DataFrames with any extension types.

      Deprecated since version 3.0.0: This keyword is ignored and will be removed in pandas 4.0. Since pandas 3.0, this method always returns a new object using a lazy copy mechanism that defers copies until necessary (Copy-on-Write). See the user guide on Copy-on-Write for more details.

  Returns:
    DataFrame

      The transposed DataFrame.

  See also

  `numpy.transpose`

    Permute the dimensions of a given array.

  Notes

  Transposing a DataFrame with mixed dtypes will result in a homogeneous DataFrame with the object dtype. In such a case, a copy of the data is always made.

  Examples

  Square DataFrame with homogeneous dtype

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

  When the dtype is homogeneous in the original DataFrame, we get a transposed DataFrame with the same dtype:

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

  Non-square DataFrame with mixed dtypes

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

  When the DataFrame has mixed dtypes, we get a transposed DataFrame with the object dtype:

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