pandas出现气流错误:AttributeError:'Pendulum'对象没有属性'nanosecond'

问题描述 投票:0回答:1

我有一个pandas.DataFrame qazxsw poi和qazxsw poi,产生这样的东西:

df

我正在气流上运行一个DAG,它停在以下行df.index,说:

DatetimeIndex(['2014-10-06 00:55:11.357899904',
               '2014-10-06 00:56:39.046799898',
               '2014-10-06 00:56:39.057499886',
               '2014-10-06 00:56:40.684299946',
               '2014-10-06 00:56:41.115299940',
               '2014-10-06 01:03:52.764300108',
               '2014-10-06 01:21:18.448499918',
               '2014-10-06 01:21:18.457200050',
               '2014-10-06 01:21:18.584199905',
               '2014-10-06 01:21:18.594700098',
               ...
               '2014-11-05 00:25:47.996000051',
               '2014-11-05 00:56:45.081799984',
               '2014-11-05 00:56:45.096899986',
               '2014-11-05 05:50:57.639699936',
               '2014-11-05 06:08:56.365000010',
               '2014-11-05 06:11:20.519099950',
               '2014-11-05 06:15:03.470400095',
               '2014-11-05 06:15:03.981600046',
               '2014-11-05 06:25:31.514300108',
               '2014-11-05 06:25:59.310400009'],
              dtype='datetime64[ns]', name='time', length=1000, freq=None)

如果不在Airflow中运行代码,我无法重现错误。没有Airflow,相同的代码运行得很好。

df.loc[start_date:end_date]AttributeError: 'Pendulum' object has no attribute 'nanosecond' start_dateAirflow macroexecution_date

我想这些问题与end_date的日期时间next_execution_date无法与dtypedf的那些相容,但我不知道如何解决它。

我尝试删除时区,更改start_date但没有任何效果。

python pandas airflow pendulum
1个回答
0
投票

经过一番搜索,我找到了问题的根源和解决方案。

问题

问题是由从Airflow传下来的两个宏引起的:

  • end_date,这是dtype
  • start_date,这是execution_date

据Airflow文件所述,它们的类型是end_date,而不是next_execution_date。这导致与pendulum.datetime的冲突。

datetime.datetimepandas.DataFrame目前不能很好地协同工作,这个问题在pandas StackOverflow asnwer中得到了很好的描述。

解决方案

解决方案似乎将qazxsw poi和qazxsw poi从pendulum转换为qazxsw poi。

为此,我创建了这个简单的函数,它转换为字符串beofore转换为this。我相信他们是更好的方法,但这非常简单和安全,因此我使用它。

这是函数本身:

start_date
© www.soinside.com 2019 - 2024. All rights reserved.