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

如何基于含NaN值的Series对DataFrame排序并保留行结构?

按含NaN的Series排序DataFrame并保留所有行

你需要根据包含NaN且行数多于原DataFrame的Series对DataFrame排序,同时保留Series的所有行(对应NaN行的列填充NaN),以保证后续横向合并时行数一致。原代码使用loc会丢失NaN行,以下是简洁的解决方法:

最优简洁方案

直接用reindex替代loc,一行代码完成:

df_1 = df_1.set_index('Number').reindex(series_2).reset_index()

原理说明

  • set_index('Number'):将DataFrame的索引设置为排序依据的Number列
  • reindex(series_2):严格按照series_2的顺序和所有元素(包括NaN)重新排列DataFrame,不存在的索引项对应的列自动填充NaN
  • reset_index():将索引重新转为普通列,恢复原DataFrame的结构

备选方案(灵活合并场景)

如果需要更灵活的合并逻辑,可使用merge方法:

# 将Series转为带列名的DataFrame
series_df = series_2.to_frame(name='Number')
# 左连接保留Series的所有行,匹配不到的填充NaN
result = series_df.merge(df_1, on='Number', how='left')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:33:32