Pandas.DataFrame.T 快速转置 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本: 本文基于 pandas2.1.2 编写。

关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。

Pandas稳定版更新及变动内容整合专题: Pandas稳定版更新及变动迭持续更新。

Pandas API参考所有内容目录

Pandas.DataFrame.T

DataFrame.TDataFrame.transpose 的访问器,可以用于快速转置,如果需要精细控制是否创建数据副本,可以使用 DataFrame.transpose()

⚠️ 注意 :

转置单一数据类型的 DataFrame 默认不会创建数据副本,转之后的数据修改,会作用于原始数据。例1。如果不想数据修改影响原始数据,请使用 DataFrame.transpose() 并设置 copy=True 例1-4

转换具有混合数据类型的 DataFrame 将导致具有 object 数据类型的同质 DataFrame 。在这种情况下,即使用 DataFrame.transpose() 并设置 copy=False 也将制作数据的副本。例2

在这里插入图片描述

转置前和转置后示意图

语法:

DataFrame.T

返回值:

  • DataFrame
    • 返回转之后的 DataFrame

相关方法:

➡️ 相关方法


示例:

测试文件下载:

本文所涉及的测试文件,如有需要,可在文章顶部的绑定资源处下载。

若发现文件无法下载,应该是资源包有内容更新,正在审核,请稍后再试。或站内私信作者索要。

测试文件下载位置.png


例1:具有单一数据类型的 DataFrame 不会自动创建数据副本, 转之后的数据修改,会作用于原始数据

  • 例1-1、 构建演示数据,并观察数据类型
import pandas as pd

# 构建演示数据
d1 = {
   "col1": [1, 2], "col2": [3, 4]}
df = pd.DataFrame(data=d1)

# 观察数据类型BaseException
df.dtypes
col1    int64
col2    int64
dtype: object

观察上面结果,可以发现,col1和col2两列的数据类型相同

  • 例1-2、 进行转置
# 转置
df1 = df.T
df1
0 1
col1 1 2
col2 3 4
  • 例1-3、 对转之后的数据修改数据,然后观察原始数据
# 修改df1的值
df1.iloc[0, 0] = 100
# 观察原始数据df
df
col1 col2
0 100 3
1 2 4

由上面结果可以发现,数据类型相同,转之后并没有创建数据副本,对转置数据的修改,会反应在原始数据中。

  • 例1-4、 使用 df.transpose 设置 copy=True, 对转之后的数据修改数据,则不会修改原始数据。
import pandas as pd

# 构建演示数据
d1 = {
   "col1": [1, 2], "col2": [3, 4]}
df = pd.DataFrame(data=d1)

# 转置
df2 = df.transpose(copy=True)

# 修改转之后的数据
df2.iloc[0, 0] = 100

# 观察原始数据
df
col1 col2
0 1 3
1 2 4

由上面结果可以发现,具有统一数据类型的 DataFrame 设置 copy=True 转置后,转置数据的修改,不会反映在原始数据。


例2:转置混合数据类型的 DataFrame 将始终创建数据副本,即便 copy=False

import pandas as pd

# 构建演示数据
d2 = {
   'name': ['Alice', 'Bob'],
      'score': [9.5, 8],
      'employed': [False, True],
      'kids': [0, 0]}
df2 = pd.DataFrame(data=d2)
# 设置copy=False 转置
df3 = df.transpose(copy=False)

# 修改df3的数据
df3.iloc[0,0] = 1000

# 观察原始数据
df
df2
name score employed kids
0 Alice 9.5 False 0
1 Bob 8.0 True 0

由上面结果可以发现,即便转置时设置 copy=False ,转置后的数据修改,也没有作用于原始数据,这说明转置混合数据类型的 DataFrame 将始终创建数据副本

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-18 04:32:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-18 04:32:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-18 04:32:02       87 阅读
  4. Python语言-面向对象

    2024-01-18 04:32:02       96 阅读

热门阅读

  1. 菜鸟C语言实例

    2024-01-18 04:32:02       60 阅读
  2. 【Leetcode】269.火星词典(Hard)

    2024-01-18 04:32:02       50 阅读
  3. Unity面试笔记:Unity常见关键词概念

    2024-01-18 04:32:02       49 阅读
  4. go语言GMP模式介绍以及协程案例展示

    2024-01-18 04:32:02       50 阅读
  5. MongoDB聚合:$indexStats

    2024-01-18 04:32:02       50 阅读
  6. C#中类型的转换

    2024-01-18 04:32:02       58 阅读
  7. 数字猜测游戏

    2024-01-18 04:32:02       47 阅读
  8. ubuntu通过virtualbox安装win虚拟机

    2024-01-18 04:32:02       54 阅读
  9. Matlab | SISO系统差分方程求解(附matlab源码)

    2024-01-18 04:32:02       51 阅读