首页 > 解决方案 > 了解 to_datetime AttributeError: 'tuple' 对象没有属性 'lower'

问题描述

我继承了一些非常混乱的遗留代码,它们调用 Google Analytics API 并将一些指标保存到 pandas 数据框中。

有一date列是字符串,我想转换为日期。我通常会像这样使用 pd.to_datetime,final['date'] = pd.to_datetime(final['date'], format='%Y%m%d', errors='coerce')但它给了我这个错误:

AttributeError: 'tuple' object has no attribute 'lower'

这是数据框的描述:

print(final.info())

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 37047 entries, 0 to 37046
Data columns (total 5 columns):
(date,)               37047 non-null object
(landingPagePath,)    37047 non-null object
(sessions,)           37047 non-null object
(bounces,)            37047 non-null object
(market,)             37047 non-null object
dtypes: object(5)
memory usage: 1.4+ MB
None

我在这里找到了一个类似的 SO 问题,如果我这样做了,解决方案就有效

final['date'] = pd.to_datetime([x for x in final['date'].squeeze().tolist()], dayfirst=True).

但是我仍然不明白是什么导致了这个问题。我猜该列在某种程度上不一致,但我不知道如何确定哪一行是罪魁祸首。找出答案的最佳方法是什么?

标签: pythonpandas

解决方案


在我非常相似的情况下,请检查type(final['date'])pd.to_datetime()主要与pd.Series.

这甚至可以解释为什么squeeze()有效。它转换DataFrameSeries.


推荐阅读