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

Pandas合并同结构DataFrame后排序,DF2行未在对应日期末尾如何解决

问题原因

你仅按date字段排序的逻辑没有区分同日期下DF和DF2的行优先级,排序时同日期的行顺序不满足你要的「DF行在前、DF2行在后」的规则,因此输出不符合预期。

解决方案

最简单稳妥的方案是增加一个临时排序辅助列,标记行的来源优先级,排序后再删除该列即可:

# 标记DF的行排序优先级更高
DF['sort_flag'] = 0
DF2['sort_flag'] = 1

# 拼接后先按日期排序,同日期下按优先级排序,最后删除辅助列
result = pd.concat([DF, DF2])\
           .sort_values(by=['date', 'sort_flag'])\
           .drop(columns='sort_flag')\
           .reset_index(drop=True)

如果不想加辅助列,也可以用分组拼接的方式实现:

result = DF.groupby('date', group_keys=False)\
           .apply(lambda group: pd.concat([group, DF2.query(f"date == '{group.name}'")]))\
           .reset_index(drop=True)

第一种方案在数据量较大时运行效率更高,更推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:45:03