了解to_datetime AttributeError:“ tuple”对象没有属性“ lower”

时间:2019-03-23 11:14:41

标签: python pandas

我继承了一些非常凌乱的旧代码,这些代码调用了Google Analytics(分析)API,并将一些指标保存到了熊猫数据框中。

有一个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

我发现了类似的问题here,如果我这样做,则解决方案有效

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

但是,我仍然一开始不了解是什么原因导致了该问题。我猜该列在某种程度上是不一致的,但是我不知道如何确定是哪一行。找出答案的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

与我的情况非常相似,请检查 type(final['date'])pd.to_datetime() 主要与 pd.Series 一起使用。

这甚至可以解释为什么 squeeze() 有效。它将 DataFrame 转换为 Series