【问题标题】:pandas filter date time: TypeError: can't compare offset-naive and offset-aware datetimes熊猫过滤器日期时间:TypeError:无法比较offset-naive和offset-aware datetimes
【发布时间】:2017-03-26 04:24:17
【问题描述】:

我有一个熊猫数据框:

    name    my_timestamp
------------------------------------------
0   a1      2016-07-28 09:27:07.536963-07:00
1   a2      2016-07-28 09:27:07.536963-07:00
2   a3      2016-08-15 13:05:54.924185-07:00
3   a4      2016-08-30 04:04:18.971667-07:00
4   a5      2016-03-22 14:36:22.999825-07:00
5   a6      2016-08-30 04:04:18.971667-07:00

我正在尝试过滤我的 pandas 数据框中的一些行,如下所示:

import datetime
my_df[my_df.my_timestamp > datetime.datetime(2016, 7, 1)]

但是得到以下错误:

TypeErrorTraceback (most recent call last)
<ipython-input-21-35be746f191d> in <module>()
      1 import datetime
----> 2 my_df[my_df.my_timestamp > datetime.datetime(2016, 7, 1)]

/usr/local/lib/python2.7/dist-packages/pandas/core/ops.pyc in wrapper(self, other, axis)
    761                 other = np.asarray(other)
    762 
--> 763             res = na_op(values, other)
    764             if isscalar(res):
    765                 raise TypeError('Could not compare %s type with Series' %

/usr/local/lib/python2.7/dist-packages/pandas/core/ops.pyc in na_op(x, y)
    681                     result = lib.vec_compare(x, y, op)
    682             else:
--> 683                 result = lib.scalar_compare(x, y, op)
    684         else:
    685 

pandas/lib.pyx in pandas.lib.scalar_compare (pandas/lib.c:14261)()

TypeError: can't compare offset-naive and offset-aware date times

这似乎是时区问题。在这里忽略时区的最佳方法是什么?谢谢!

【问题讨论】:

  • 你能提供你的数据框样本吗? (以及它是如何构造的)
  • my_df[my_df.my_timestamp > pd.to_datetime("2016-07-01")]
  • @DennisGolomazov:添加了示例数据框。谢谢!
  • @piRSquared:我尝试了你的建议,但仍然是同样的错误。任何想法?谢谢!

标签: python python-2.7 datetime pandas filter


【解决方案1】:

假设数据帧中​​的所有时间戳都在同一个时区:

tz_info = my_df.iloc[0].my_timestamp.tzinfo
my_df[my_df.my_timestamp > datetime.datetime(2016, 7, 1, tzinfo=tz_info)]

【讨论】:

  • 效果很好。谢谢!
  • @Edamame 很高兴它有帮助!
猜你喜欢
  • 2021-03-23
  • 2018-02-27
  • 1970-01-01
  • 2012-05-26
  • 2017-09-16
  • 1970-01-01
  • 1970-01-01
  • 2021-03-21
  • 1970-01-01
相关资源
最近更新 更多