【问题标题】:Python: Indexing in Pandas with Datetime indicesPython:在 Pandas 中使用日期时间索引进行索引
【发布时间】: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


【解决方案1】:

我相信您需要通过索引选择索引的第一个值来标量 - [0]

df.loc[df.index >= first_value_of_year[0]]

【讨论】:

  • 非常感谢...在这上面花了 2 多个小时 :-)
猜你喜欢
  • 1970-01-01
  • 2014-07-09
  • 1970-01-01
  • 1970-01-01
  • 2017-08-13
  • 2017-01-03
  • 2014-03-07
  • 2016-01-04
  • 1970-01-01
相关资源
最近更新 更多