Skip to main content
`Ctrl`+`K`

# pandas.DataFrame.transpose

DataFrame.transpose(*args, copy=False)

  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.

    copy bool, default False

      Whether to copy the data after transposing, even for DataFrames with a single dtype.

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

      Note

      The copy keyword will change behavior in pandas 3.0. Copy-on-Write will be enabled by default, which means that all methods with a copy keyword will use a lazy copy mechanism to defer the copy and ignore the copy keyword. The copy keyword will be removed in a future version of pandas.

      You can already get the future behavior and improvements through enabling copy on write `pd.options.mode.copy_on_write = True`

  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         object
      score       float64
      employed       bool
      kids          int64
      dtype: object
      >>> df2_transposed.dtypes
      0    object
      1    object
      dtype: object