You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含SiteID的DataFrame转为单行?pivot后SiteID重复问题求解

解决思路:让SiteID在pivot后仅保留单行
  • 直接修改pivot代码,指定index='SiteID'作为行分组依据:
    你之前的代码没指定index参数,导致pandas沿用原数据的行索引,每个原始行对应pivot后的一行,SiteID自然重复。加上index='SiteID'后,pandas会按SiteID聚合,每个SiteID只生成一行:

    df_hours = df.pivot(index='SiteID', columns='DayID', values='StartTime').reset_index()
    

    其中reset_index()是把SiteID从索引列转回普通列,方便后续处理。

  • 若存在同一SiteID+DayID的重复数据,改用pivot_table并指定聚合函数:
    如果原始数据里同一个站点同一天有多个StartTime记录,pivot会报错,这时候用pivot_table配合聚合函数(比如取第一个值first、最大值max等)来合并:

    df_hours = df.pivot_table(index='SiteID', columns='DayID', values='StartTime', aggfunc='first').reset_index()
    
  • 针对已生成的重复SiteID结果,用groupby合并:
    要是已经得到了SiteID重复的DataFrame,直接按SiteID分组后取每组的第一行(或符合业务逻辑的聚合方式)即可:

    df_hours_clean = df_hours.groupby('SiteID').first().reset_index()
    

内容的提问来源于stack exchange,提问作者bellotto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:05:39