Python 选择数据帧中不在系列中的行

Python 选择数据帧中不在系列中的行,python,pandas,dataframe,series,Python,Pandas,Dataframe,Series,因此,我有一个名为trips的数据帧,其中包含以下信息: route_id service_id shape_id trip_id 0 BX12 GH_B6-Weekday BX120805 GH_B6-Weekday-004000_BX12_1 1 BX12 GH_B6-Weekday BX120809 GH_B6-Weekday-009000_BX12_1 2 BX12 GH_B6-Weekday B

因此,我有一个名为trips的数据帧,其中包含以下信息:

route_id     service_id  shape_id                      trip_id
0     BX12  GH_B6-Weekday  BX120805  GH_B6-Weekday-004000_BX12_1
1     BX12  GH_B6-Weekday  BX120809  GH_B6-Weekday-009000_BX12_1
2     BX12  GH_B6-Weekday  BX120792  GH_B6-Weekday-013000_BX12_1
3     BX12  GH_B6-Weekday  BX120809  GH_B6-Weekday-017000_BX12_1
4     BX12  GH_B6-Weekday  BX120792  GH_B6-Weekday-021000_BX12_1
...
trip_id
11760139-BPPB6-BP_B6-Weekday-10         16
11760139-BPPB6-BP_B6-Weekday-10-SDon    16
11760140-BPPB6-BP_B6-Weekday-10         19
11760140-BPPB6-BP_B6-Weekday-10-SDon    19
11760141-BPPB6-BP_B6-Weekday-10         16
...
我还有一个名为invalidTrips的系列,包含以下信息:

route_id     service_id  shape_id                      trip_id
0     BX12  GH_B6-Weekday  BX120805  GH_B6-Weekday-004000_BX12_1
1     BX12  GH_B6-Weekday  BX120809  GH_B6-Weekday-009000_BX12_1
2     BX12  GH_B6-Weekday  BX120792  GH_B6-Weekday-013000_BX12_1
3     BX12  GH_B6-Weekday  BX120809  GH_B6-Weekday-017000_BX12_1
4     BX12  GH_B6-Weekday  BX120792  GH_B6-Weekday-021000_BX12_1
...
trip_id
11760139-BPPB6-BP_B6-Weekday-10         16
11760139-BPPB6-BP_B6-Weekday-10-SDon    16
11760140-BPPB6-BP_B6-Weekday-10         19
11760140-BPPB6-BP_B6-Weekday-10-SDon    19
11760141-BPPB6-BP_B6-Weekday-10         16
...
如何选择行程中没有与无效行程中的行程id匹配的行程id的所有行

编辑:现在我有了以下代码:

# Grab the number of trips made outside min and max hour.
tooEarly = stopTimes['arrival_time'] < base_mintime
tooLate = stopTimes['departure_time'] > base_maxtime
invalidTrips = stopTimes[(tooEarly | tooLate)].groupby('trip_id').size()

# Filter out the invalid trips.
print(invalidTrips.size)
print(trips.size)
in_validTrips = ~trips.trip_id.isin(invalidTrips)
validTrips = trips[in_validTrips][['route_id', 'service_id', 'shape_id']]
print(validTrips.size)
无论出于何种原因,尽管invalidTrips.size可能会根据base_mintime和base_maxtime而变化,但validTrips.size保持不变,即使我希望它与invalidTrips.size成反比。为什么会这样

有关更多背景信息,请参阅GTFS数据。

更新:

尝试isin函数和~运算符

根据@EdChum在评论中的更正-如果无效跳闸为串联类型:

trips[~trips.trip_id.isin(invalidTrips.index)]
测试:

更新:

尝试isin函数和~运算符

根据@EdChum在评论中的更正-如果无效跳闸为串联类型:

trips[~trips.trip_id.isin(invalidTrips.index)]
测试:


我收到了错误消息:AttributeError:“Series”对象没有属性“trip\u id”@EdChum,当然,谢谢你-我已经更正了关于错误的答案,Series没有列,因此trips[~trips.trip\u id.IsInInInValid\u trips]应该可以正常工作,但这并不是我想要它做的:我编辑了原始问题,添加了有关当前情况的详细信息。我得到错误消息:AttributeError:“Series”对象没有属性“trip\u id”@EdChum,当然,谢谢你-我已经更正了关于错误的答案,Series没有列,所以trips[~trips.trip\u id.isininvalid\u trips]Well workIt似乎做了些什么,但并不是我想要它做的:我编辑了原始问题,添加了有关当前情况的详细信息。这与基本上你可以做的旅行[~trips['trip\u id']密切相关。isininvalid\u trips]这与基本上你可以做的旅行[~trips['trip\u id']密切相关。isininvalid\u trips]