【发布时间】:2020-01-02 14:40:24
【问题描述】:
我遇到了关于 Pandas 索引的问题,希望您能帮助我:
rng = pd.date_range('2015-12-31 21:00:00', periods=7, freq='H')
df = pd.DataFrame({ 'Val' : np.random.randn(len(rng)) }, index=rng)
first_value_of_year = df['2016'].first('1H').index
将年份的第一个值作为 DatetimeIndex 返回:
DatetimeIndex(['2016-01-01'], dtype='datetime64[ns]', freq='H')
当我用这个索引调用数据框时,一切似乎都正常:
df.loc[first_value_of_year]
返回
+------------------------+-----------+
| | Val |
+------------------------+-----------+
| 2016-01-01 | 0.144044 |
所以,到这里为止一切正常! 但是如果我想获得大于这个值的所有值,它就不再起作用了:
df.loc[df.index >= first_value_of_year]
并给出ValueError(长度必须匹配):
但是如果我将时间戳本身作为字符串使用相同的命令,它会执行它应该执行的操作
df.loc[df.index >= '2016-01-01 00:00:00']
返回
+------------------------+-----------+
| | Val |
+------------------------+-----------+
| 2016-01-01 01:00:00 | 1.454274 |
| 2016-01-01 02:00:00 | 0.761038 |
| 2016-01-01 03:00:00 | 0.121675 |
那么,我在这里缺少什么?如何正确访问大于 DatetimeIndex 变量的所有值?
谢谢!
【问题讨论】:
-
我不明白它是否按您想要的方式工作?此外,在方括号内打印变量类型可能会给您一个提示,例如打印(类型(df.index >= first_value_of_year))
标签: python pandas dataframe datetime indexing