从 Python 中的 Dataframe 过滤多个条件 [英] Filtering multiple conditions from a Dataframe in Python
本文介绍了从 Python 中的 Dataframe 过滤多个条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想使用多列的多个条件从数据框中过滤掉数据.我试着这样做:
I want to filter out data from a dataframe using multiple conditions using multiple columns. I tried doing so like this:
arrival_delayed_weather = [[[flight_data_finalcopy["ArrDelay"] > 0]] & [[flight_data_finalcopy["WeatherDelay"]>0]]]
arrival_delayed_weather_filter = arrival_delayed_weather[["UniqueCarrier", "AirlineID"]]
print arrival_delayed_weather_filter
但是我收到此错误消息:
However I get this error message:
TypeError: 不支持 & 的操作数类型:'list' 和 'list'
TypeError: unsupported operand type(s) for &: 'list' and 'list'
我该如何解决这个问题?
How do I solve this?
提前致谢
推荐答案
你需要 ()
代替 []
:
arrival_delayed_weather = (flight_data_finalcopy["ArrDelay"] > 0) &
(flight_data_finalcopy["WeatherDelay"]>0)
但似乎您需要 ix
用于通过 mask
选择列 UniqueCarrier
和 AirlineID
- 稍微修改了 布尔索引
:
But it seems you need ix
for selecting columns UniqueCarrier
and AirlineID
by mask
- a bit modified boolean indexing
:
mask = (flight_data_finalcopy["ArrDelay"] > 0) &
(flight_data_finalcopy["WeatherDelay"]>0)
arrival_delayed_weather_filter=flight_data_finalcopy.ix[mask, ["UniqueCarrier","AirlineID"]]
示例:
flight_data_finalcopy = pd.DataFrame({'ArrDelay':[0,2,3],
'WeatherDelay':[0,0,6],
'UniqueCarrier':['s','a','w'],
'AirlineID':[1515,3546,5456]})
print (flight_data_finalcopy)
AirlineID ArrDelay UniqueCarrier WeatherDelay
0 1515 0 s 0
1 3546 2 a 0
2 5456 3 w 6
mask = (flight_data_finalcopy["ArrDelay"] > 0) & (flight_data_finalcopy["WeatherDelay"]>0)
print (mask)
0 False
1 False
2 True
dtype: bool
arrival_delayed_weather_filter=flight_data_finalcopy.ix[mask, ["UniqueCarrier","AirlineID"]]
print (arrival_delayed_weather_filter)
UniqueCarrier AirlineID
2 w 5456
这篇关于从 Python 中的 Dataframe 过滤多个条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文