Pandas数据帧:访问多个不等于,=!

2024-06-02 02:01:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下Pandas数据帧对象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
....

现在,假设我想选择“Train”列中的所有项目“DeutscheBahn”。

我会用

DB = df[df['Train'] == 'DeutscheBahn']

现在,除了德国铁路、英国铁路和瑞士铁路公司,我怎么能选择所有的列车呢。如何同时选择而不是这些项?

notDB = df[df['Train'] != 'DeutscheBahn']

以及

notSNCF = df[df['Train'] != 'SNCF']

但我不知道如何将这些组合成一个命令。

df[df['Train'] != 'DeutscheBahn', 'SNCF']

不起作用。


Tags: 数据对象importpandasdf时间公司train
2条回答
df[~df['Train'].isin(['DeutscheBahn', 'SNCF'])]

isin返回给定列表中df['Train']中的值,并且开头的~实际上是一个not运算符。

另一个有效但较长的语法是:

df[(df['Train'] != 'DeutscheBahn') & (df['Train'] != 'SNCF')]

我喜欢使用查询方法,因为它更清晰一些

df = df.query("Train not in ['DeutscheBahn', 'British Rails', 'SNCF']")

相关问题 更多 >