Pandas 如何根据定制时间列表对时间索引数据进行子集?

Pandas 如何根据定制时间列表对时间索引数据进行子集?,pandas,subset,Pandas,Subset,我有一个数据帧,其时间索引如下: date 2020-06-17 23:00:00 558 2020-06-17 23:01:00 184 2020-06-17 23:02:00 113 2020-06-17 23:03:00 85 2020-06-17 23:04:00 47 ... 2020-07-01 18:48:00 203 2020-07-01 18:49:00 118 2020-07-01 1

我有一个数据帧,其时间索引如下:

date
2020-06-17 23:00:00    558
2020-06-17 23:01:00    184
2020-06-17 23:02:00    113
2020-06-17 23:03:00     85
2020-06-17 23:04:00     47
                      ... 
2020-07-01 18:48:00    203
2020-07-01 18:49:00    118
2020-07-01 18:50:00    236
2020-07-01 18:51:00    216
2020-07-01 18:52:00    198
Name: quarklgt, Length: 13478, dtype: int64
我的名单如下:

tss=["12:00:04","1:00:06","2:00:10","5:00:14","9:00:24"]
我如何才能为tss列表对数据帧进行子集/筛选? 我尝试了
df.index.between_time(tss[0],len(tss)-1)
,但这将给出中间的所有数据。非常感谢


谢谢

这是我的方法,首先需要将datetime对象拆分为date和hh:mm:ss格式。然后,我们将
hh:mm:ss
转换为字符串,并使用
.isin(tss)
作为过滤的掩码。总而言之:

df = df.reset_index()
df = df[df['date'].map(lambda x: str(x).split()[1]).isin(tss)]
下面是一个示例,它应该保留第二、第四和第六行:

df = pd.DataFrame({'date':['2020-06-17 23:00:00',
                           '2020-06-17 12:00:04',
                           '2020-06-17 23:02:00',
                           '2020-06-17 1:00:06',
                           '2020-06-17 23:03:00',
                           '2020-06-17 2:00:10',
                           '2020-07-01 18:48:00',
                           '2020-07-01 18:49:00',
                           '2020-07-01 18:50:00',
                           '2020-07-01 18:51:00',
                           '2020-07-01 18:52:00']}).set_index('date')
使用代码后:

df = df.reset_index()
df = df[df['date'].map(lambda x: str(x).split()[1]).isin(tss)]
输出为:

                  date
1  2020-06-17 12:00:04
3   2020-06-17 1:00:06
5   2020-06-17 2:00:10

非常感谢塞利乌斯。我试过了,但没有得到想要的结果。事实上,整个df都是空的。tss是否需要是Datetimeindex对象?目前这是一个字符串。我道歉。tss没有秒,而df日期有秒。因此,这是我的坏作为一个格式问题。这很好用。非常感谢Celius.BTW,顺便提一下,我尝试了另一种使用多索引的方法,它将df拆分为日期和时间的两个索引,但随后我陷入了子集设置过程。我不知道如何基于多索引df的索引进行子集。无论如何,你的方法工作完美,所以我将使用它。谢谢。我很高兴你能成功!请随意接受答案,将您的问题标记为已解决!