我有以下 Pandas DataFrame 对象 df
。这是一张火车时刻表,列出了出发日期、预定出发时间和火车公司。
import pandas as pd
df =
Year Month DayofMonth DayOfWeek DepartureTime Train Origin
Datetime
1988-01-01 1988 1 1 5 1457 BritishRail Leeds
1988-01-02 1988 1 2 6 1458 DeutscheBahn Berlin
1988-01-03 1988 1 3 7 1459 SNCF Lyons
1988-01-02 1988 1 2 6 1501 BritishRail Ipswich
1988-01-02 1988 1 2 6 1503 NMBS Brussels
....
现在,假设我想选择“火车”列中的所有项目“DeutscheBahn”。
我会用
DB = df[df['Train'] == 'DeutscheBahn']
现在,我如何选择除 DeutscheBahn、British Rails 和 SNCF 之外的所有列车。我怎样才能同时选择不是这些项目?
notDB = df[df['Train'] != 'DeutscheBahn']
和
notSNCF = df[df['Train'] != 'SNCF']
但我不确定如何将这些组合成一个命令。
df[df['Train'] != 'DeutscheBahn', 'SNCF']
没用。
最佳答案
df[~df['Train'].isin(['DeutscheBahn', 'SNCF'])]
isin
返回给定列表中df['Train']
中的值,开头的~
本质上是一个 not
运算符。
另一个有效但更长的语法是:
df[(df['Train'] != 'DeutscheBahn') & (df['Train'] != 'SNCF')]
关于python - 使用不等于、!= 访问多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34397982/