Так что я DataFrame называется trips
, содержащий следующую информацию:Выбор строки в DataFrame, которые не являются в серии
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
...
У меня также есть серия под названием invalidTrips
, содержащий следующую информацию:
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
...
Как бы выбрать все строки в trips
, которые не имеют trip_id
соответствие с trip_id
в invalid_trips
?
EDIT: Так что теперь у меня есть этот код:
# 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.)
Это тесно связано с http://stackoverflow.com/questions/12065885/how-to-filter-the-dataframe-rows-of-pandas-by-within-in в основном вы можете сделать '' поездки – EdChum