如何合并DataFrame透视后的同索引行,整合对应列数据?
解决方案
方法一:优化初始pivot操作(推荐)
你当前的pivot后出现拆分行,是因为多余操作导致格式混乱。直接用以下代码可一步生成目标格式:
# 执行pivot并直接重命名列 dataframe = dataframe.pivot(index=['time', 'id'], columns='type', values='value') dataframe.columns = [f"{col}_type" for col in dataframe.columns] # 重置索引,让time和id回到列中 dataframe = dataframe.reset_index()
这段代码会自动将同一time和id下的A、B类型值合并到同一行,无需后续处理NaN。
方法二:处理已生成的含NaN的DataFrame
如果已经得到每行仅一个类型有值的DataFrame,可通过按time和id分组聚合合并行:
# 按time和id分组,取每组的第一个非NaN值 dataframe = dataframe.groupby(['time', 'id']).first().reset_index()
也可以用max()/min()聚合(NaN不参与计算,自动保留有效数值):
dataframe = dataframe.groupby(['time', 'id']).max().reset_index()
两种方法最终都会得到你需要的格式:
time id A_type B_type 9:04 1 23 12 9:10 2 81 17 9:12 3 11 2 9:14 4 88 17
内容的提问来源于stack exchange,提问作者Cauder
相关产品推荐
相关产品推荐

