如何基于现有DataFrame按规则提取列数据生成新DataFrame
实现方案
这个需求属于典型的长表转宽表场景,使用Python Pandas库的pivot方法即可快速实现,具体步骤如下:
- 第一步:导入Pandas库
import pandas as pd
- 第二步:读取/构造原始DataFrame1
如果是从文件读取数据可使用pd.read_excel()、pd.read_csv()等方法,示例数据构造代码如下:
data = { "id": [1, 1, 2, 2], "Timestamp": ["02:15:00", "02:15:00", "03:00:00", "03:00:00"], "Name": ["A", "B", "A", "B"], "Status": ["FALSE", "TRUE", "TRUE", "FALSE"] } df1 = pd.DataFrame(data)
- 第三步:执行宽表转换
# 按id、Timestamp分组,将Name字段值转为列名,Status作为对应列的值 df2 = df1.pivot(index=["id", "Timestamp"], columns="Name", values="Status") # 按需求重命名列 df2 = df2.rename(columns={"A": "n1", "B": "n2"}) # 重置索引,将id、Timestamp从索引转为普通列 df2 = df2.reset_index()
如果存在同id、同Timestamp下有多个相同Name值的情况,可以先做分组聚合再转换,示例如下:
# 同组下取第一个Status值,可根据需求换为last、max等聚合逻辑 df1 = df1.groupby(["id", "Timestamp", "Name"])["Status"].first().reset_index() # 再执行上面的pivot转换逻辑即可
内容的提问来源于stack exchange,提问作者user12252991
相关产品推荐
相关产品推荐

