Python 如何使用Pandas删除特定的时间范围数据

Python 如何使用Pandas删除特定的时间范围数据,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我的数据集df如下所示: time Open 2017-01-01 00:00:00 5.2475 2017-01-01 01:00:00 5.2180 2017-01-01 02:00:00 5.2128 ...., .... 2017-12-31 23:00:00 5.7388 这是一个小时数据集 我想删除周五晚上10点到周日上午10点之间的所有数据 我做了什么? 我可以这样度过一整天: df = df[df['tim

我的数据集
df
如下所示:

time                    Open
2017-01-01 00:00:00     5.2475
2017-01-01 01:00:00     5.2180
2017-01-01 02:00:00     5.2128
...., ....
2017-12-31 23:00:00     5.7388
这是一个
小时
数据集

我想删除周五晚上10点到周日上午10点之间的所有数据

我做了什么?

  • 我可以这样度过一整天:

    df = df[df['time'].dt.dayofweek != 5] # Removes Saturday
    
  • 但是我想取消星期五和星期天的几个小时

我该怎么做

你可以一个接一个地写下你的条件

s1=df['time'].dt.dayofweek == 5
s2=(df['time'].dt.dayofweek == 4)&(df.time.dt.hour>20)
s3=(df['time'].dt.dayofweek == 6)&(df.time.dt.hour<10)
df=df[~(s1|s2|s3)]
s1=df['time'].dt.dayofweek==5
s2=(df['time'].dt.dayofweek==4)和(df.time.dt.hour>20)

s3=(df['time'].dt.dayofweek==6)和(df.time.dt.hour您可以一个接一个地编写您的条件

s1=df['time'].dt.dayofweek == 5
s2=(df['time'].dt.dayofweek == 4)&(df.time.dt.hour>20)
s3=(df['time'].dt.dayofweek == 6)&(df.time.dt.hour<10)
df=df[~(s1|s2|s3)]
s1=df['time'].dt.dayofweek==5
s2=(df['time'].dt.dayofweek==4)和(df.time.dt.hour>20)

s3=(df['time'].dt.dayofweek==6)和(df.time.dt.hourf从您的上一个问题开始,它看起来像是一个
xy
问题。您的扩展问题可以在不分成两部分的情况下得到解决。
xy
问题意味着什么?您能帮助解决另一个问题吗?它似乎不起作用。它应该与
copy()一起工作)
。查看有关问题的解释。
xy
复制()是什么
do?从您的上一个问题来看,它似乎是一个
xy
问题。您的扩展问题可以不分成两个小部分来解决。
xy
问题是什么意思?您能帮助解决另一个问题吗?它似乎不起作用。它应该与
copy()一起工作
。请查看
xy
问题的解释。
copy()
有什么作用?这是可行的,但我会发送此消息。
UserWarning:Boolean系列键将重新编制索引以匹配数据帧索引。从sys.path中删除cwd后。
这意味着什么,我们需要修复它吗?@flossf try
df=df[~(s1 | s2 | s3)].copy()
?什么是
.copy()
do?我试过了,但仍然不起作用。@floss这只是一个警告…它们与索引匹配。这是有效的,但我会发送此消息。
UserWarning:Boolean系列键将被重新索引以匹配数据帧索引。从sys.path中删除cwd后。
这意味着什么,我们需要修复它吗?@flossf try
df=df[~(s1 | s2 | s3)].copy()
?什么是
.copy()
做的?我试过了,但仍然不起作用。@floss这只是一个警告…它们与索引匹配。