pandas 如何在连接的DataFrame TimeSeries中搜索特定日期,同一日期在合并的df中会重复几次

13z8s7eq  于 2023-01-28  发布在  其他
关注(0)|答案(2)|浏览(117)

我下载了^GSPC股票市场指数(S&P500)和其他几个全球指数的历史价格数据。日期设置为指数。
当date设置为index时,选择行中的值与.loc的预期效果相同。

# S&P500 DataFrame = spx_df
spx_df.loc['2010-01-04']

Open            1.116560e+03
High            1.133870e+03
Low             1.116560e+03
Close           1.132990e+03
Volume          3.991400e+09
Dividends       0.000000e+00
Stock Splits    0.000000e+00
Name: 2010-01-04 00:00:00-05:00, dtype: float64

然后,我将几个股票市场全球指数连接到一个DataFrame中以供进一步使用。实际上,当五个股票指数的历史数据链接到一个时间序列中时,范围内的任何日期都将被包括五次。

markets = pd.concat(ticker_list, axis = 0)

我想在concatenated df中引用一个日期并将其设置为变量。我希望上述变量不代表datetime对象,因为我想使用.loc作为def函数的一部分来访问它。如果同一日期在链接的TimeSeries中重复多次,concatenate如何通过日期作为索引访问行?
这是我目前所做的尝试:

# markets = concatenated DataFrame 
Reference_date = markets.loc['2010-01-04'] 
# KeyError: '2010-01-04'

Reference_date = markets.loc[markets.Date == '2010-01-04']
# This doesn't work because Date is not an attribute of the DataFrame
56lgkhnf

56lgkhnf1#

要访问连接的DataFrame中的特定日期,可以使用布尔索引而不是. loc。这将返回一个DataFrame,其中包含日期等于引用日期的所有行:
参考日期=市场[市场指数== '2010-01- 04']
您可能还需要使用query()方法来搜索特定数据

reference_date = markets.query('index == "2010-01-04"')

请记住,生成的变量reference_date仍然是一个DataFrame,并且包含所有连接的DataFrame中与引用日期匹配的所有行。如果只想提取特定的列,则可以按如下方式使用列名:

reference_date_Open = markets.query('index == "2010-01-04"')["Open"]
qhhrdooz

qhhrdooz2#

由于您已将日期设置为索引,因此您应该能够执行以下操作:Reference_date = markets.loc[markets.index == '2010-01-04']

相关问题