为什么date_range的结果与索引DataFrame Pandas日期的[]不同?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么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'))
要获得以熊猫为单位的特定日期或时间范围,最简单的方法就是简单的括号表示法。例如,要获取2013年1月4日至2013年1月8日(含)之间的日期,只需输入以下内容:
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方法具有更大的灵活性。如果需要,此表示法还可用于日期时间。
以上是关于为什么date_range的结果与索引DataFrame Pandas日期的[]不同?的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用datetime创建示例dataframe:包含完整的时分秒信息创建时间索引使用不同的时间频率date_range中参数freq的偏移量别名
pandas使用date_range函数按照指定的频率(freq)和指定的个数(periods)生成dataframe的时间格式数据列基于dataframe的日期数据列生成日期索引