我有一个熊猫数据框,其以下索引的频率为秒:

DatetimeIndex(['2015-12-28 05:20:05', '2015-12-28 05:20:06',
               '2015-12-28 05:20:07', '2015-12-28 05:20:08',
               ...
               '2015-12-28 21:19:55', '2015-12-28 21:19:56',
               '2015-12-28 21:19:57', '2015-12-28 21:19:58']


给定日期时间字符串列表,我想一次提取多行。我试过了:

df.loc[['2015-12-28 08:32:39', '2015-12-28 08:32:48']]


但是我收到以下错误:

KeyError: "None of [['2015-12-28 08:32:39', '2015-12-28 08:32:48']] are in the [index]"

最佳答案

您可以通过listdatetimeDatetimeIndex转换为to_datetime

d = ['2015-12-28 05:20:05', '2015-12-28 21:19:58']
print (df.loc[pd.DatetimeIndex(d)])


要么:

print (df.loc[pd.to_datetime(d)])


样品:

idx = pd.DatetimeIndex(['2015-12-28 05:20:05', '2015-12-28 05:20:06',
               '2015-12-28 05:20:07', '2015-12-28 05:20:08',
               '2015-12-28 21:19:55', '2015-12-28 21:19:56',
               '2015-12-28 21:19:57', '2015-12-28 21:19:58'])
df = pd.DataFrame({'s': range(8)}, index=idx)
print (df)
                     s
2015-12-28 05:20:05  0
2015-12-28 05:20:06  1
2015-12-28 05:20:07  2
2015-12-28 05:20:08  3
2015-12-28 21:19:55  4
2015-12-28 21:19:56  5
2015-12-28 21:19:57  6
2015-12-28 21:19:58  7

d = ['2015-12-28 05:20:05', '2015-12-28 21:19:58']
print (df.loc[pd.to_datetime(d)])
                     s
2015-12-28 05:20:05  0
2015-12-28 21:19:58  7

print (df.loc[pd.to_datetime(d)])
                     s
2015-12-28 05:20:05  0
2015-12-28 21:19:58  7

关于python - Pandas :使用DatetimeIndices列表从DataFrame中提取多行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45213834/

10-13 01:11