在数据框中以小时为间隔过滤时间本地化的索引

我有一个.csv,如下所示:

,columnA
2019-01-01 00:00:00-05:00,10
2019-01-01 00:05:00-05:00,10
2019-01-01 00:10:00-05:00,11
.
.
.
.
2019-10-31 23:45:00-05:00,10
2019-10-31 23:50:00-05:00,10
2019-10-31 23:55:00-05:00,12

pd.read_csv('myfile.csv',index_col=0,parse_dates=True)

现在,我只尝试保留在9:00:00-05:00至15:00:00-05:00之间的索引所在的行。

如何知道索引是按时间定位的?

df.index [:10]的输出是:

Index([2019-01-01 00:05:00-05:00,2019-01-01 00:10:00-05:00,2019-01-01 00:15:00-05:00,2019-01-01 00:20:00-05:00,2019-01-01 00:25:00-05:00,2019-01-01 00:30:00-05:00,2019-01-01 00:35:00-05:00,2019-01-01 00:40:00-05:00,2019-01-01 00:45:00-05:00,2019-01-01 00:50:00-05:00],dtype='object')

类型(df.index [0])的输出为:

df.index [0]的输出为:

2019-01-01 00:00:00-05:00

codyhcm 回答:在数据框中以小时为间隔过滤时间本地化的索引

如果您的数据被正确读取为带时区的datetime对象,则可以在小时中添加额外的列,并在小时中添加简单过滤器。如果datetime值是您的索引,则应首先在其中创建一列:

df = pd.read_csv('myfile.csv',index_col=0,parse_dates=True)
df = df.reset_index(drop=False).rename(columns={'index':'Dates'})
df['datetime'] = df['Dates'].dt.tz_localize(none)
df['hour'] = df['datetime'].dt.hour 
df_filtered = df[(df['hour'] >= 9) & (df['hour'] <= 15)]
,

csv文件示例(test.csv

,columnA
2019-01-01 00:00:00-05:00,10
2019-01-01 00:05:00-05:00,10
2019-01-01 00:10:00-05:00,11
2019-01-01 09:10:00-05:00,21
2019-01-01 09:20:00-05:00,30
2019-10-31 09:10:00-05:00,54
2019-10-31 14:45:00-05:00,10
2019-10-31 14:55:00-05:00,17
2019-10-31 23:45:00-05:00,10
2019-10-31 23:50:00-05:00,10
2019-10-31 23:55:00-05:00,12

您可以直接使用between_time

df = pd.read_csv('test.csv',parse_dates=True)
df.index = pd.to_datetime(df.index) #if index is not `datetimeindex`,need this step
df.between_time('9:00:00','15:00:00')

Out[94]:
                           columnA
2019-01-01 09:10:00-05:00       21
2019-01-01 09:20:00-05:00       30
2019-10-31 09:10:00-05:00       54
2019-10-31 14:45:00-05:00       10
2019-10-31 14:55:00-05:00       17

或者:

使用DatetimeIndex.indexer_between_timeiloc

df = pd.read_csv('test.csv',need this step
m = df.index.indexer_between_time('9:00:00','15:00:00')
df.iloc[m]

Out[93]:
                           columnA
2019-01-01 09:10:00-05:00       21
2019-01-01 09:20:00-05:00       30
2019-10-31 09:10:00-05:00       54
2019-10-31 14:45:00-05:00       10
2019-10-31 14:55:00-05:00       17
本文链接:https://www.f2er.com/3141027.html

大家都在问