python - 了解 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)
.
但是我仍然不明白是什么导致了这个问题。我猜该列在某种程度上不一致,但我不知道如何确定哪一行是罪魁祸首。找出答案的最佳方法是什么?
解决方案
在我非常相似的情况下,请检查type(final['date'])
。
pd.to_datetime()
主要与pd.Series
.
这甚至可以解释为什么squeeze()
有效。它转换DataFrame
为Series
.
推荐阅读
- python - 将 jupyter 小部件与 QA 管道连接以解决问题选择问题
- android - 根据底部导航更改操作栏标题
- c++ - 无法接收 vsomeip 客户端的订阅确认
- android - 如何将所有按钮排成一行?
- javascript - 我需要帮助来创建一个新的 html 应答器来显示代码
- react-native - 为什么我不能在 react native 中导入我的自定义组件
- c++ - 如何在某个字符之后溢出字符串并删除最后一个标记?
- powershell - Remove non domain user from local admins powershell
- python-3.x - 如何在 JupyterHub 中创建新的 Anaconda 环境并将环境绑定到新的 Jupyter-Notebook?
- dialogflow-cx - 在起始页上没有匹配意图期间将用户话语保存在参数中