pandas DataFrame行列转置

本文深入探讨了使用Python的Pandas库进行数据处理时,stack与unstack函数的应用技巧。通过实例展示了如何将DataFrame转换为Series,以及如何通过改变索引来调整数据结构,帮助读者掌握更高效的数据操作方法。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(6).reshape(2,3),index=("AA","BB"),columns=["three","two","one"])
print(df)
    three  two  one
AA      0    1    2
BB      3    4    5

表格在行列方向上均有索引(类似于DataFrame),花括号结构只有“列方向”上的索引(类似于层次化的Series),结构更加偏向于堆叠(Series-stack,方便记忆)。stack函数会将数据从”表格结构“变成”花括号结构“,即将其行索引变成列索引,反之,unstack函数将数据从”花括号结构“变成”表格结构“,即要将其中一层的列索引变成行索引

#直接列索引转换到最内层行索引,生一个Series对象
df2 = df.stack()
print(df2)
AA  three    0
    two      1
    one      2
BB  three    3
    two      4
    one      5
dtype: int64

df.stack()将df格式从表格形式转化成了花括号结构

# 将第二行的列索引转化成行索引
df3 = df2.unstack(0)
print(df3)
       AA  BB
three   0   3
two     1   4
one     2   5
# unstack()或者unstack(1)将第二行的列索引转化成行索引
df3 = df2.unstack()
print(df3)
    three  two  one
AA      0    1    2
BB      3    4    5
### 如何在 Pandas DataFrame 中检查行和列的数据类型 #### 使用 `dtypes` 属性查看各列数据类型 为了获取 DataFrame 各列的数据类型,可以直接调用 `DataFrame.dtypes` 属性。这会返回一个 Series 对象,其中索引为列名,值为对应的数据类型。 ```python import pandas as pd # 创建示例 DataFrame data = {'A': [1, 2], 'B': ['foo', 'bar']} df = pd.DataFrame(data) print(df.dtypes) ``` 上述代码将展示每一列及其对应的 Python 数据类型[^1]。 #### 使用 `info()` 方法获取更详细的元信息 除了 `dtypes` 外,还可以通过调用 `DataFrame.info()` 来获得关于整个 DataFrame 的更多信息,包括非空条目数以及内存占用情况等。这对于初步了解数据集非常有用。 ```python print(df.info()) ``` 此命令仅显示了每列的数据类型,还提供了有关缺失值的信息和其他统计摘要。 #### 行级别的数据类型检测 对于特定行内各个字段的具体数据类型,则可以通过迭代该行并应用内置函数 `type()` 或者使用 NumPy 类型转换工具来进行逐项验证: ```python for index, row in df.iterrows(): print(f"Row {index}: {[type(item).__name__ for item in row]}") ``` 这段脚本遍历 DataFrame 的每一行,并打印出每个单元格的实际 Python 类型名称[^3]。 注意,在某些情况下,即使某列为整数类型定义,但如果存在 NaN 值(即 Not a Number),则该列会被自动转成浮点型以容纳这些特殊标记。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值