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

pandas 将多条记录整合成一条记录,每条记录的year和month字段组成新的字段名

你可以使用 Pandas 的 pivot_table()groupby() 方法,将多条记录整合成一条,并通过 yearmonth 这两个字段生成新的字段名。具体的实现方法是通过 pivot_table()yearmonth 作为列标签,将其他列中的数据进行整合。

假设你的数据框 df 的结构如下:

import pandas as pddata = {'id': [1, 1, 1, 2, 2],'year': [2023, 2023, 2024, 2023, 2024],'month': [1, 2, 1, 1, 1],'value': [10, 20, 30, 40, 50]
}df = pd.DataFrame(data)
print(df)

输出的原始数据:

   id  year  month  value
0   1  2023      1     10
1   1  2023      2     20
2   1  2024      1     30
3   2  2023      1     40
4   2  2024      1     50

目标:

yearmonth 组成新的字段名,并将 value 的值填入这些新列。

实现:

  1. 创建 year_month 字段:将 yearmonth 组合成一个新的列名。
  2. 使用 pivot_table 将数据透视:将 id 作为索引,将 year_month 作为列,value 作为要填充的数据。
# 1. 创建新的列名 'year_month'
df['year_month'] = df['year'].astype(str) + '_' + df['month'].astype(str)# 2. 使用 pivot_table 将数据透视
df_pivot = df.pivot_table(index='id', columns='year_month', values='value', aggfunc='first').reset_index()# 3. 填充数据,避免空值
df_pivot.fillna(0, inplace=True)# 查看结果
print(df_pivot)

输出结果:

year_month  id  2023_1  2023_2  2024_1
0            1     10.0     20.0     30.0
1            2     40.0      0.0     50.0

解释:

  1. 创建 year_month:将 yearmonth 列的值拼接成一个新的列(如 2023_1, 2023_2)。
  2. 数据透视:使用 pivot_table()id 作为索引,并将 year_month 作为新的列名,value 作为列值。
  3. 空值处理:透视后的表格中可能会有空值(例如某些 id 下没有某个 year_month),使用 fillna(0) 将其填充为 0。

这样你就能将原本多条记录整合成一条,并将 yearmonth 字段组成新的字段名。


http://www.mrgr.cn/news/27106.html

相关文章:

  • Java集合面试(上)
  • 查找算法--python
  • Makefile(超详细一文读懂)
  • 算法基础-扩展欧几里得算法
  • JS Web
  • python容器四之字典
  • GD - GD32350R_EVAL - PWM实验和验证3 - EmbeddedBuilder - 无源蜂鸣器 - 用PMOS来控制
  • 随机查询若干数据,并根据全部数据的点击量排序的核心代码
  • list和vector的区别
  • 在 Mac 中设置环境变量
  • 性能测试的复习4-数据库连接、控制器、定时器
  • Spring Cloud常见面试题
  • 初学者指南:如何在Windows 11中自定义任务栏颜色,全面解析!
  • 【C#生态园】从基础到深度学习:探索C#机器学习库
  • Stream流的思想和获取Stream流
  • 共享单车轨迹数据分析:以厦门市共享单车数据为例(四)
  • 加速开发体验:为 Android Studio 设置国内镜像源
  • JavaScript --函数的作用域(全局和局部)
  • 测试质量体系的风险评估和应对措施有哪些
  • GO Server-Sent Events (SSE)