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

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

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

import pandas as pd

data = {
    '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 字段组成新的字段名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值