python - 使用不等于、!= 访问多个项目

标签 python pandas

我有以下 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/

相关文章:

python - 限制两个数字之间的输入并同时检查输入是否为数字

python - 混合 numpy 矩阵和数组的危险

python - 为什么我不能使用OPENCV VideoCapture从正面平板相机读取视频流?

python - 为另一列中的每个唯一值创建一个具有唯一值的列

python - 根据两列中的匹配值为日期差异创建条件列

python - 将 Flask 应用程序部署到 Heroku 陷入重启循环

python将字符串转换为运算符

python - Pandas DataFrame - 将行中的几个元素转换为列并填充缺失数据

python - 如何使用 bool 掩码在 pandas DataFrame 中用 nan 替换 'any strings'?

python - 在 Pandas 数据框中找到最小值并在新列上添加标签