我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文描述dataframe对象的转置操作,在多次驰骋这些数据类型外,苏南大叔慢慢发现:dataframe的背后就是ndarraydataframe的很多操作都没有ndarray的类似操作好用。本文对dataframe对象的转置,也是基于ndarray进行操作的。

苏南大叔:基于ndarray二维数组转置,实现dataframe对象的转置 - dataframe转置
基于ndarray二维数组转置,实现dataframe对象的转置(图2-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,本文描述对dataframe对象的转置操作。测试环境:win10python@3.11.0numpy@1.24.2pandas@1.5.3

基本思路

dataframe对象的转置,实际上是对ndarray二维数组的转置。所以,本文的思路非常简单,把dataframe拆分出.values.columns.index三项内容。然后在对ndarray类型的.values进行转置,同时调换columnsindex标签,最后重新组装数据,完成需求。

拆分数据

拆分dataframe的方法,基于如下文章内容:

获得数值:

df.values

获得标签:

df.columns
df.index

.values进行转置

因为df.values的类型是ndarray,所以关于ndarray的转置问题,有如下三种方案:

df.values.T
import numpy as np
np.transpose(df.values, axes=(2, 1, 0))  
df.values.swapaxes(0,1)

当然最终选定的肯定是.T方案,最简单实用。

组装成新的dataframe

dataframe就是二维ndarray加上个labelscolumns+index)。所以,把行列标签也转置了,就可以了。参考文章:

import pandas as pd
#...
pd.DataFrame(df.values.T,columns = df.index,index = df.columns)

测试代码

import pandas as pd
df = pd.DataFrame(
    [("虎子", 5, "dog"),("老许", 3, "cat")],
    columns=("name", "age", "label"),
    index=("a1", "a2"),
)
print(df)
df2 = pd.DataFrame(df.values.T,columns = df.index,index = df.columns)
print(df2)

原版的dataframe:

     name  age label
a1   虎子    5   dog
a2   老许    3   cat

被转置过的dataframe:

        a1   a2
name   虎子 老许
age      5    3
label  dog  cat

苏南大叔:基于ndarray二维数组转置,实现dataframe对象的转置 - 转置dataframe对象
基于ndarray二维数组转置,实现dataframe对象的转置(图2-2)

结束语

本文很水,有严重的凑字数嫌疑。看看其它的苏南大叔的文章,鉴定一下水分吧。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python