如何基于索引提取DataFrame 2中独有的5行数据?
提取DataFrame中基于索引的独有行
高效直接的解法
由于你的两个DataFrame均以日期为索引,且DataFrame 2的新增行索引不存在于DataFrame 1中,直接通过索引差集即可快速提取目标行:
# 获取DataFrame 2独有的索引 unique_indices = df2.index.difference(df1.index) # 根据索引提取对应行 unique_rows = df2.loc[unique_indices]
这种方法利用Pandas优化后的索引结构,效率远高于merge操作,逻辑也完全匹配你的需求——仅提取DataFrame 2中索引不在DataFrame 1内的行。
对已有尝试方法的分析
- 左外连接merge:可行但效率低,因为表连接涉及更多底层运算,对于仅需索引匹配的场景属于冗余操作。
- 拼接后去重:稳定性差,仅当两个DataFrame无内部重复行/索引时才可能生效,否则会误删有效数据。
- 减法方法:你提到的就是上述的索引差集操作,本质是集合运算,
df2.index.difference(df1.index)等价于取df2索引减去df1索引的结果,精准对应你需要的新增行。
额外验证(针对日期索引)
如果你的索引是datetime类型,该方法依然适用,可通过以下代码验证结果范围:
print(df1.index.max()) # 输出:2020-02-20 print(unique_indices) # 输出:2020-02-21至2020-02-25的日期索引
内容的提问来源于stack exchange,提问作者Bhushan Patil
相关产品推荐
相关产品推荐

