基于ndarray二维数组转置,实现dataframe对象的转置
发布于 作者:苏南大叔 来源:程序如此灵动~
本文描述dataframe对象的转置操作,在多次驰骋这些数据类型外,苏南大叔慢慢发现:dataframe的背后就是ndarray,dataframe的很多操作都没有ndarray的类似操作好用。本文对dataframe对象的转置,也是基于ndarray进行操作的。

大家好,这里是苏南大叔的“程序如此灵动”博客,本文描述对dataframe对象的转置操作。测试环境:win10,python@3.11.0,numpy@1.24.2,pandas@1.5.3。
基本思路
对dataframe对象的转置,实际上是对ndarray二维数组的转置。所以,本文的思路非常简单,把dataframe拆分出.values,.columns,.index三项内容。然后在对ndarray类型的.values进行转置,同时调换columns和index标签,最后重新组装数据,完成需求。
拆分数据
拆分dataframe的方法,基于如下文章内容:
获得数值:
df.values获得标签:
df.columns
df.index对.values进行转置
因为df.values的类型是ndarray,所以关于【二维 】ndarray的转置问题,有如下三种方案:
- https://newsn.net/say/ndarray-t.html
- https://newsn.net/say/ndarray-transpose.html
- https://newsn.net/say/ndarray-swapaxes.html
df.values.Timport numpy as np
np.transpose(df.values)
# np.transpose(df.values, axes=(2, 1, 0)) df.values.swapaxes(0,1)当然最终选定的肯定是.T方案,最简单实用。
组装成新的dataframe
dataframe就是二维ndarray加上个labels(columns+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
结束语
本文很水,有严重的凑字数嫌疑。看看其它的苏南大叔的文章,鉴定一下水分吧。