当前位置: 首页 > article >正文

【Pandas】pandas wide_to_long

Pandas2.2 General

Data manipulations

方法描述
melt(frame[, id_vars, value_vars, var_name, …])将多个列的值转换为行形式
pivot(data, *, columns[, index, values])将长格式的数据转化为宽格式
pivot_table(data[, values, index, columns, …])用于创建数据透视表,支持多种聚合操作和复杂的数据处理
crosstab(index, columns[, values, rownames, …])用于计算交叉表,支持多种聚合操作和复杂的数据处理
cut(x, bins[, right, labels, retbins, …])用于将数值数据分割为离散的区间,可以以标签或是区间范围的形式返回
qcut(x, q[, labels, retbins, precision, …])基于排名或样本分位数将变量分段为等大小的桶的分位数离散化函数
merge(left, right[, how, on, left_on, …])数据合并操作
merge_ordered(left, right[, on, left_on, …])用于在两个 DataFrame 之间进行有序合并
merge_asof(left, right[, on, left_on, …])用于在两个 DataFrame 之间进行基于最近匹配的合并
concat(objs, *[, axis, join, ignore_index, …])用于在不同 DataFrame 或 Series 之间进行拼接操作
get_dummies(data[, prefix, prefix_sep, …])用于将类别变量转换为虚拟变量
from_dummies(data[, sep, default_category])用于将虚拟变量转换为类别变量
factorize(values[, sort, use_na_sentinel, …])用于将类别变量或对象数组转换为数值型编码
unique(values)用于返回数据中唯一值的数组
lreshape(data, groups[, dropna])用于将宽格式的数据转换为长格式
wide_to_long(df, stubnames, i, j[, sep, suffix])用于将宽格式数据重塑为长格式数据

pandas.wide_to_long()

pandas.wide_to_long 是 Pandas 库中用于将宽格式数据转换为长格式数据的一个非常有用的函数。以下是该函数每个参数的详细介绍,以及一个示例和结果。

def wide_to_long(
    df: DataFrame, stubnames, i, j, sep: str = "", suffix: str = r"\d+"
) -> DataFrame:
    ...
参数详解
  • df

    • 类型:Pandas DataFrame。
    • 说明:包含要转换的宽格式数据的 DataFrame。
  • stubnames

    • 类型:字符串或字符串列表。
    • 说明:指定要转换的列名的前缀。这些前缀列名后面通常会跟着一些后缀(如数字或字母),用于区分不同的变量。wide_to_long 会查找这些前缀相同的列,并将它们转换为长格式数据中的不同观测值。
  • i

    • 类型:字符串或字符串列表。
    • 说明:指定用作标识符的列名。这些列的值在转换后的长格式数据中会保持不变,用于唯一标识每个观测值。
  • j

    • 类型:字符串。
    • 说明:指定新生成的列的名称。在转换后的长格式数据中,这个名称会用于表示原来的宽格式数据中不同后缀对应的变量。
  • sep

    • 类型:字符串。
    • 说明:指定用于分隔 stubnamesj 的连接符。在转换过程中,这个连接符会从列名中去除。默认为空字符串。
  • suffix

    • 类型:字符串。
    • 说明:指定用于捕获后缀的正则表达式。在宽格式数据中,这个正则表达式会用于匹配 stubnames 后面的后缀。默认为 '\d+',表示一个或多个数字。
示例及结果

以下是一个使用 pandas.wide_to_long 的示例:

import pandas as pd

# 创建一个宽格式的 DataFrame
data = {
    'famid': [1, 1, 1, 2, 2, 2, 3, 3, 3],
    'birth': [1, 2, 3, 1, 2, 3, 1, 2, 3],
    'ht1': [2.8, 2.9, 2.2, 2, 1.8, 1.9, 2.2, 2.3, 2.1],
    'ht2': [3.4, 3.8, 2.9, 3.2, 2.8, 2.4, 3.3, 3.4, 2.9]
}
df = pd.DataFrame(data)

# 使用 wide_to_long 函数将宽格式数据转换为长格式数据
l = pd.wide_to_long(df, stubnames=['ht'], i=['famid', 'birth'], j='age')

# 打印转换后的长格式数据
print(l)

输出结果

famid birth age
1     1     1    2.8
            2    3.4
      2     1    2.9
            2    3.8
      3     1    2.2
            2    2.9
2     1     1    2.0
            2    3.2
      2     1    1.8
            2    2.8
      3     1    1.9
            2    2.4
3     1     1    2.2
            2    3.3
      2     1    2.3
            2    3.4
      3     1    2.1
            2    2.9

http://www.kler.cn/a/428747.html

相关文章:

  • 在k8s中部署一个可外部访问的Redis Sentinel
  • JDK长期支持版本(LTS)
  • 【机器学习实战中阶】比特币价格预测
  • STM32补充——FLASH
  • 生产环境中常用的设计模式
  • Fabric区块链网络搭建:保姆级图文详解
  • AWS Kinesis Firehose 权限配置完全指南
  • BERT模型的输出格式探究以及提取出BERT 模型的CLS表示,last_hidden_state[:, 0, :]用于提取每个句子的CLS向量表示
  • DSA 和 ECDSA 签名算法
  • 调用matlab用户自定义的function函数时,有多个输出变量只输出第一个变量
  • 【Linux课程学习】:站在文件系统之上理解:软硬链接,软硬链接的区别
  • 面试中遇到的一些有关进程的问题(有争议版)
  • Linux学习笔记15 何为HDD,SSD?sata?PCIE?分区,MBR,GPT分区的理解
  • STM32标准固件库官网下载方法
  • Spring Boot微服务应用实战:构建高效、可扩展的服务架构
  • 显示设备驱动开发
  • 【力扣】2094.找出3为偶数
  • 【Leetcode 每日一题】3001. 捕获黑皇后需要的最少移动次数
  • 【CSS in Depth 2 精译_066】11.2 颜色的定义(上):实现示例页中的基础样式及初步布局
  • vim实用命令整理(常用的命令)
  • mybatis plus打印sql日志
  • Apache Doris 数据类型
  • 海报在线制作系统海报制作小程序PHP+Uniapp
  • Elasticsearch:使用 Elastic APM 监控 Android 应用程序
  • SPT: Revisiting the Power of Prompt for Visual Tuning
  • 【jvm】垃圾回收的重点区域