python - 为什么 date_range 给出的结果与 DataFrame Pandas 日期的索引 [] 不同?
问题描述
date_range
这是我在 Pandas 中使用的带有索引 [ ]的简单代码
period_start = '2013-01-01'
period_end = '2019-12-24'
print(pd.DataFrame ({'close':aapl_close,
'returns':aapl_returns},index=pd.date_range(start=period_start,periods=6)))
print(pd.DataFrame ({'close':aapl_close,
'returns':aapl_returns})[period_start:'20130110'])
date_range
给出 Nan 结果
close returns
2013-01-01 NaN NaN
2013-01-02 NaN NaN
2013-01-03 NaN NaN
2013-01-04 NaN NaN
索引给出正确的结果
close returns
2013-01-02 00:00:00+00:00 68.732 0.028322
2013-01-03 00:00:00+00:00 68.032 -0.010184
2013-01-04 00:00:00+00:00 66.091 -0.028531
根据日期的显示方式date_range
- 我想日期格式date_range
与 Pandas DataFrame 中的日期格式不匹配。
1)你能解释一下为什么它给出NaN吗?
2) 你会建议从 Panda DataFrame 中获取特定时间范围吗?
解决方案
由于我是 Python 及其库的初学者,我不明白这个问题指的是 Quantopian 库,而不是 Pandas。
我在他们的论坛上找到了解决方案。Quantopian 上的方法返回的所有时间都是时区感知的,时区为“UTC”。默认情况下,date_range 方法返回时区初始日期。只需将时区信息提供给 date_range 方法。像这样
pd.DataFrame ({
'close':aapl_close,
'returns':aapl_returns,},
index=pd.date_range(start=period_start, periods=6, tz='UTC'))
要在 pandas 中获取特定的日期或时间范围,最简单的方法可能是简单的括号表示法。例如,要获取 2013-01-04 和 2013-01-08(含)之间的日期,只需输入以下内容:
df = pd.DataFrame ({'close':aapl_close, 'returns':aapl_returns,})
my_selected_dates = df['2013-01-04':'2013-01-08']
这个括号表示法实际上是使用 loc 方法的简写
my_selected_dates = df.loc['2013-01-04':'2013-01-08']
两者的工作方式相同,但 loc 方法具有更多的灵活性。如果需要,此表示法也适用于日期时间。
推荐阅读
- javascript - 阅读更多阅读更少功能
- flutter - 位置参数太多:预期为 0,但找到了 1。尝试删除额外的参数
- karate - 如何在 responseCode == 和 != 上为一个 API 添加 if 条件
- javascript - 带自动滑动的滑块部分
- tensorflow - Seaborn 无法为特定特征绘制热图(泰坦尼克数据集)
- javascript - 调整窗口大小时使用 getBoundingClientRect()
- asp.net-core - 在不丢失数据的情况下自动重新连接 Blazor Server 应用程序?
- php - 允许特定用户管理和安装插件 - WooCommerce/Wordpress
- javascript - JQuery:如何将“数据内容”分配给元素的相等内容
- java - 从 BOOT-INF/lib 中删除文件