Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在pandas数据框上过滤两列,其中一列表示通话时间_Python_Pandas - Fatal编程技术网

Python 在pandas数据框上过滤两列,其中一列表示通话时间

Python 在pandas数据框上过滤两列,其中一列表示通话时间,python,pandas,Python,Pandas,我有一个熊猫数据框,如下所示: import pandas as pd df = pd.DataFrame({'DAY_OF_WEEK': ['Monday', 'Sunday', 'Saturday', 'Monday', 'Tuesday'], 'HOUR': ['21:02:02', '11:22:02', '23:02:02', '09:22:02', '09:02:02'], 'id': [1,2,2,3,1]})

我有一个熊猫数据框,如下所示:

import pandas as pd

df = pd.DataFrame({'DAY_OF_WEEK': ['Monday', 'Sunday', 'Saturday', 'Monday', 'Tuesday'],
                   'HOUR': ['21:02:02', '11:22:02', '23:02:02', '09:22:02', '09:02:02'],
              'id': [1,2,2,3,1]})

df

我需要为新的数据帧应用一个过滤器,它只在19:00:00到07:00:00之间的
HOUR
或每周的
DAY
=='Sunday'之间注册。预期产出:

DAY_OF_WEEK |   HOUR  | ID
Monday      |21:02:02 | 1
Saturday    |23:02:02 | 2
Monday      |09:22:02 | 3
我尝试以下几点:

df2 = df.loc[(pd.to_timedelta(df.HOUR).between('06:00:00','19:00:00') | df['DAY_OF_WEEK'] == 'Sunday')]
calls_night_or_sunday = df[~df2].copy()
但是,我有一个输出,其中所有行都接收到
NaN
。有人能帮忙吗?

试着用“|”代替“或”

试着用这个代替

df2 = df.loc[(pd.to_timedelta(df.HOUR).between('06:00:00','19:00:00') | (df['DAY_OF_WEEK'] == 'Sunday'))]

更新:
时间范围已更改

您可以使用:

df.loc[('19' < df['HOUR']) | (df['HOUR'] < '06') |  (df['DAY_OF_WEEK'] == 'Sunday')]

在19:00:00和07:00:00之间,通过这种方式,所有数据都使用.query()--df2=df.query('(HOUR>=“06:00:00”)接收NaNTry,Hourline#3和#4带来时间值​​超出范围我不明白你想做什么。你写了“19:00:00和07:00:00之间的时间或星期天=‘星期日’”,在例子中写了“星期一09:22:02 | 3”。09:22:02不在19:00:00和07:00:00之间。
df.loc[('19' < df['HOUR']) | (df['HOUR'] < '06') |  (df['DAY_OF_WEEK'] == 'Sunday')]
  DAY_OF_WEEK      HOUR  id
0      Monday  21:02:02   1
1      Sunday  11:22:02   2
2    Saturday  23:02:02   2