Python 基于另一个数据帧的索引查询数据帧中的行子集

Python 基于另一个数据帧的索引查询数据帧中的行子集,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个5分钟欧元/美元的数据框,还有一个非农场工资数据框。我想创建一个新的数据框,其中包含NFP日期的所有欧元兑美元5分钟数据行。见下文: #NFP Days (Dataframe #1) nfp_dates = forex_calendar.loc[forex_calendar['Event'] == '(United States) Nonfarm Payrolls'] #将csv文件导入Pandas dataframes并转换为Pandas datetime并设置为索引(Datafr

我有一个5分钟欧元/美元的数据框,还有一个非农场工资数据框。我想创建一个新的数据框,其中包含NFP日期的所有欧元兑美元5分钟数据行。见下文:

#NFP Days (Dataframe #1)
nfp_dates = forex_calendar.loc[forex_calendar['Event'] == '(United States) Nonfarm Payrolls']
#将csv文件导入Pandas dataframes并转换为Pandas datetime并设置为索引(Dataframe#2)

所需数据帧(数据帧#3) 我想要一个名为“eurusd_ask_nfp”的新数据框,该数据框包含nfp日期(即2012-01-06、2012-02-03、2012-03-09等)eurusd_ask的所有5分钟数据行(全天)


尝试一下,但是您应该能够使用
Index.isin
查询日期匹配的所有记录

idx = nfp_dates.index
eurusd_ask_nfp = eurusd_ask[eurusd_ask.index.isin(idx)]

如果有人想知道答案,我就能找到答案,给你:

nfp_dates = forex_calendar.loc[forex_calendar['Event'] == '(United States) Nonfarm Payrolls']
nfp_dates = nfp_dates.reset_index()
nfp_dates = nfp_dates['Date'].dt.date
nfp_5min = eurusd_ask[np.isin(eurusd_ask.index.date, nfp_dates)]
这是我想要的

Gmt time            Open    High    Low     Close   Volume              
2012-06-01 00:00:00 1.27925 1.27977 1.27925 1.27965 919.94
2012-06-01 00:05:00 1.27966 1.27971 1.27939 1.27958 668.37
2012-06-01 00:10:00 1.27958 1.27984 1.27929 1.27930 732.95
2012-06-01 00:15:00 1.27930 1.27956 1.27913 1.27921 732.04
2012-06-01 00:20:00 1.27922 1.27960 1.27918 1.27942 552.55
2012-06-01 00:25:00 1.27940 1.27940 1.27920 1.27928 384.76
2012-06-01 00:30:00 1.27929 1.27983 1.27929 1.27957 682.91
2012-06-01 00:35:00 1.27957 1.27963 1.27921 1.27927 572.12
2012-06-01 00:40:00 1.27928 1.27938 1.27889 1.27901 794.94
2012-06-01 00:45:00 1.27901 1.27901 1.27878 1.27887 535.03

哇!还有一个关于图片中数据的问题!因为从图片复制数据非常容易:)请不要发布代码或数据的图像。只需复制它并将其作为文本发布,然后选择它并键入
ctrl-k
,将其格式化为代码。这似乎不起作用,它只是在NFP事件发生时提取数据。我想要一整天的NFP数据。也许你上面建议的代码的问题是NFP_日期。索引中也有时间。因此,当您对所有记录进行查询时,返回的是日期和时间匹配的位置<代码>开高关低低量Gmt时间2012-06-01 08:30:00 1.27898 1.27960 1.27896 1.27948 1527.5800 2012-11-02 08:30:00 1.31953 1.31953 1.31953 1.31953 0.0000 2012-02-03 09:30:00 1.32424 1.32522 1.32421.32464 1045.8100 2012-08-03 08-08:30:00 1.31775 1.31782 1.31706 1.31726 1514.6600很抱歉评论中的格式,我仍在学习如何正确使用网站/降价。
nfp_dates = forex_calendar.loc[forex_calendar['Event'] == '(United States) Nonfarm Payrolls']
nfp_dates = nfp_dates.reset_index()
nfp_dates = nfp_dates['Date'].dt.date
nfp_5min = eurusd_ask[np.isin(eurusd_ask.index.date, nfp_dates)]
Gmt time            Open    High    Low     Close   Volume              
2012-06-01 00:00:00 1.27925 1.27977 1.27925 1.27965 919.94
2012-06-01 00:05:00 1.27966 1.27971 1.27939 1.27958 668.37
2012-06-01 00:10:00 1.27958 1.27984 1.27929 1.27930 732.95
2012-06-01 00:15:00 1.27930 1.27956 1.27913 1.27921 732.04
2012-06-01 00:20:00 1.27922 1.27960 1.27918 1.27942 552.55
2012-06-01 00:25:00 1.27940 1.27940 1.27920 1.27928 384.76
2012-06-01 00:30:00 1.27929 1.27983 1.27929 1.27957 682.91
2012-06-01 00:35:00 1.27957 1.27963 1.27921 1.27927 572.12
2012-06-01 00:40:00 1.27928 1.27938 1.27889 1.27901 794.94
2012-06-01 00:45:00 1.27901 1.27901 1.27878 1.27887 535.03