pandas.DataFrame.transpose#
- DataFrame.transpose(*args, copy=False)[源代码]#
转置索引和列。
通过将行写为列,反之亦然,使 DataFrame 围绕其主对角线进行反射。 属性
T是方法transpose()的访问器。- Parameters:
- *args元组,可选
为兼容 NumPy 而接受。
- copybool,默认 False
是否在转置后复制数据,即使对于具有单一 dtype 的 DataFrame 也是如此。
请注意, 对于混合 dtype 的 DataFrame 或具有任何扩展类型的 DataFrame, 总是需要复制。
备注
copy 关键字在 pandas 3.0 中将更改行为。Copy-on-Write 将默认启用,这意味着所有带有 copy 关键字的方法都将使用惰性复制机制来延迟复制并忽略 copy 关键字。copy 关键字将在 pandas 的未来版本中移除。
通过启用 copy on write
pd.options.mode.copy_on_write = True,您可以获得未来的行为和改进。
- Returns:
- DataFrame
转置后的DataFrame。
参见
numpy.transpose置换给定数组的维度。
Notes
转置具有混合 dtype 的 DataFrame 将导致具有 object dtype 的同质 DataFrame。 在这种情况下, 总是会复制数据。
Examples
具有同质 dtype 的方 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
具有混合 dtype 的非方 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 具有混合 dtype 时, 我们会得到一个具有 object dtype 的转置 DataFrame:
>>> df2.dtypes name object score float64 employed bool kids int64 dtype: object >>> df2_transposed.dtypes 0 object 1 object dtype: object