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