pandas笔记:找出在一个dataframe但不在另一个中的index

本文介绍了如何在Python的pandas库中,使用两种方法从两个DataFrame中找出不在data2中的数据行:一是直接使用`index.difference()`函数,二是通过`merge`操作并利用`_merge`列筛选出仅在data中的行。
摘要由CSDN通过智能技术生成

1 问题描述

假设我们有两个dataframe(这一段代码)来自transbigdata 笔记:官方文档案例1(出租车GPS数据处理)-CSDN博客

data = tbd.clean_outofshape(data, sz, col=['Lng', 'Lat'], accuracy=500)
data

data2 = tbd.clean_taxi_status(data, col=['VehicleNum', 'Time', 'OpenStatus'])
data2

我们希望找到在data中但不在data2中的index

2 方法1 index.difference

data.index
#RangeIndex(start=0, stop=543138, step=1)

data2.index
'''
Index([452072, 444077, 444078, 444075, 444079, 444073, 444074, 444076, 452073,
       446704,
       ...
        64415,  64402,  64413,  64411,  64405,  64390,  64406,  64393,  64391,
        64396],
      dtype='int64', length=542224)
'''

diff_index = data.index.difference(data2.index)
diff_index
'''
Index([   710,    807,    844,   1372,   1564,   1684,   1690,   1753,   2842,
         4150,
       ...
       532055, 533757, 534219, 540261, 540471, 540481, 541260, 541263, 541889,
       542487],
      dtype='int64', length=914)
'''

3 方法2:使用merge

这个其实更灵活,可以通过设置on参数来指定用哪一列合并(不设置则默认是index)

merge几个参数的说明,可见:pandas 笔记:合并操作_pandas 字符合并-CSDN博客

merged=pd.merge(data,data2,how='outer',indicator=True)
merged

merged[merged['_merge']=='left_only'].index
'''
Index([   710,    807,    844,   1372,   1564,   1684,   1690,   1753,   2842,
         4150,
       ...
       532055, 533757, 534219, 540261, 540471, 540481, 541260, 541263, 541889,
       542487],
      dtype='int64', length=914)
'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值