如何在多行中访问pandas datetime时间戳的值 - 语法?
我有一列日期,想在逻辑运算中使用这些日期的值。对于一行数据,我可以很容易地做到这一点,但我不知道怎么写语法才能查看所有行的数据。
我想找出在特定时间范围内和特定地点的所有值。
Y=x.loc[xx.timestamp[:].month<7 and xx.timestamp[:].month>2 and xx.Area == 'GBK']
但是“时间戳”这一部分不工作(我的这一行标记为“时间戳”)。所以,我在排查问题:
访问一行数据
xx.timestamp[10]
Out[291]: Timestamp('1977-02-15 00:00:00')
访问这一行的 pandas 时间戳的月份值
xx.timestamp[10].month
Out[292]: 2
访问所有行的时间戳月份值
xx.timestamp[:].month
Traceback (most recent call last):
AttributeError: 'Series' object has no attribute 'month'
我可以访问一行,但无法访问更多行。我缺少了什么呢……
1 个回答
3
Series没有month这个属性(即使它是一个日期时间的Series):
In [11]: s = pd.Series(pd.to_datetime('2014-01-01'))
In [12]: s
Out[12]:
0 2014-01-01
dtype: datetime64[ns]
你可以把这个Series包装成DatetimeIndex,这样就可以使用month属性了:
In [13]: pd.DatetimeIndex(s).month
Out[13]: array([1])
在0.15.0版本中会有一个dt访问器:
In [14]: s.dt.month # 0.15.0+ only
Out[14]:
0 1
dtype: int64
注意:你不能用and
来处理Series或numpy数组,你需要用&
:
x.loc[(DatetimeIndex(xx.timestamp).month < 7) & (DatetimeIndex(xx.timestamp.month) > 2) & (xx.Area == 'GBK')]