Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.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将DatetimeIndex向量过滤到特定频率_Python_Pandas_Datetime_Dataframe - Fatal编程技术网

Python 使用pandas将DatetimeIndex向量过滤到特定频率

Python 使用pandas将DatetimeIndex向量过滤到特定频率,python,pandas,datetime,dataframe,Python,Pandas,Datetime,Dataframe,我正在使用从DukasCopy获得外汇汇率,该软件包非常有效。这是我正在使用的脚本: from findatapy.market import Market, MarketDataRequest, MarketDataGenerator market = Market(market_data_generator=MarketDataGenerator()) md_request = MarketDataRequest(start_date='01 Feb 2017', finish_date

我正在使用从DukasCopy获得外汇汇率,该软件包非常有效。这是我正在使用的脚本:

from findatapy.market import Market, MarketDataRequest, MarketDataGenerator

market = Market(market_data_generator=MarketDataGenerator())

md_request = MarketDataRequest(start_date='01 Feb 2017', finish_date='03 Feb 2017', category='fx', fields=['bid', 'ask'], freq='tick', data_source='dukascopy', tickers=['EURUSD'])

df = market.fetch_market(md_request)

print(df)
print(len(df))
print(df.index)
print(len(df.index))
我只对具有小时频率(00:00:00、01:00:00、02:00:00等)的积分感兴趣。这意味着过滤后,我每天只能得到24分

现在,我得到的结果是

df:

df.index:

我现在想做的是,使用每小时的频率过滤索引,然后选择相应的点,但我完全不知道如何操作

我认为我应该做的是用熊猫创建一个具有所需索引的数组,并使用它来切片我的主数组,但是我怎么做呢?pandas.date\u range能否帮助我创建此“所需”数组?还是有更简单的方法


谢谢你抽出时间

您只需使用
pd.TimeGrouper
对象,为每个小时组提取第一行,如下所示:

df = df.groupby(pd.TimeGrouper('1H')).head(1)

@cᴏʟᴅsᴘᴇᴇᴅ 这很有效:),这是我一直在寻找的结果。我还想拆分索引向量(这是我的“日期”向量),但我会尝试找到我的方法,因为它看起来“更容易”。谢谢!你能解释一下你想怎么分开吗?我不清楚这一点。@cᴏʟᴅsᴘᴇᴇᴅ 如果您只看到'df.index'的结果,您将看到天+空格+小时。我想把它分别分为“天”和“小时”;h=df.index.hour?这个成功了:),再次感谢@cᴏʟᴅsᴘᴇᴇᴅ, 我不知道以前怎么没找到这些广告。但我真的很高兴你帮了我:)@COLDSPEED再次感谢你,我将使用第二行,因为我注意到df.resample('1H').mean()计算区间值的平均值,这不是我想要的。我只想要最接近每小时的时间,这就是我使用df.groupby(pd.TimeGrouper('1H'))得到的时间。head(1)@AquilesPáez好的,不用担心。我都加了,因为我不是100%确定你想要什么。另外,如果你想分割索引,你可以只做
d=df.index.day;h=df.index.hour