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

合并并重新排序DataFrame时行顺序错乱问题求助

问题原因及解决方法

原因分析

拆分后的df_AT和df_VS继承了原DataFrame重置后的重复索引(比如原索引2的行被拆分到两个子DataFrame中,两者都保留了索引2)。pd.concat合并时,会按传入列表的顺序保留同索引行的先后(先放df_AT的索引2行,再放df_VS的索引2行);而sort_index仅按索引值排序,不会考虑原DataFrame中同索引行的原始顺序,最终导致部分行的相对顺序和拆分前反转。布局间距混乱则是重复索引引发的显示异常。

解决方法

方法1:合并时重置索引(推荐)

合并时使用ignore_index=True生成新的连续索引,再按原排序依据Time列重新排序,完全还原初始顺序:

df_AT_VS = [df_AT, df_VS]
fin_df_Sched = pd.concat(df_AT_VS, ignore_index=True)
fin_df_Sched = fin_df_Sched.sort_values(by='Time')

方法2:保留原索引但修正顺序

如果必须保留原索引,可在拆分前给原DataFrame添加记录原始顺序的列,合并后按该列排序还原顺序:

# 假设原DataFrame名为original_df,拆分前已按Time排序
original_df['original_order'] = range(len(original_df))
# 拆分时保留该列
df_AT = original_df[original_df['H/A'].isin(['H','A'])].copy()
df_VS = original_df[original_df['H/A'] == 'N'].copy()
# 合并后按原始顺序排序,再删除辅助列
fin_df_Sched = pd.concat([df_AT, df_VS]).sort_values(by='original_order').drop(columns='original_order')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:16:02