使用 pandas to_datetime 出现“AttributeError:‘DataFrame’对象没有属性‘dtype’”

Emm*_*mma 2 python string datetime pandas

我一直在 Windows 机器上使用Python 2.7.13来编写代码。但我现在尝试使用 Python 2.7.12-goolf-2015a在 Unix 集群上运行我的代码。当我在使用 2.7.12 的集群上运行代码时,我在 pandas 函数中遇到了一个错误to_datetime,而使用 2.7.13 则不会出现该错误。

\n

当我尝试将数据框中的日期条目转换为日期时间时,会发生错误。

\n
df = pd.DataFrame({\'year\': [2015, 2016],\n                       \'month\': [2, 3],\n                       \'day\': [4, 5]})\npd.to_datetime(df)\n
Run Code Online (Sandbox Code Playgroud)\n

to_datetime这是我使用命令时遇到的错误的示例

\n
Traceback (most recent call last):\nFile "<stdin>", line 1, in <module>\nFile "/usr/local/easybuild/software/Python/2.7.12-goolf-\n2015a/lib/python2.7/site-packages/pandas-0.16.1-py2.7-linux-\nx86_64.egg/pandas/tseries/tools.py", line 343, in to_datetime\nreturn _convert_listlike(arg, box, format)\nFile "/usr/local/easybuild/software/Python/2.7.12-goolf-\n2015a/lib/python2.7/site-packages/pandas-0.16.1-py2.7-linux-\nx86_64.egg/pandas/tseries/tools.py", line 266, in _convert_listlike\nif com.is_datetime64_ns_dtype(arg):\nFile "/usr/local/easybuild/software/Python/2.7.12-goolf-\n2015a/lib/python2.7/site-packages/pandas-0.16.1-py2.7-linux-\nx86_64.egg/pandas/core/common.py", line 2513, in is_datetime64_ns_dtype\ntipo = _get_dtype(arr_or_dtype)\nFile "/usr/local/easybuild/software/Python/2.7.12-goolf-\n2015a/lib/python2.7/site-packages/pandas-0.16.1-py2.7-linux-\nx86_64.egg/pandas/core/common.py", line 2458, in _get_dtype\nreturn arr_or_dtype.dtype\nFile "/usr/local/easybuild/software/Python/2.7.12-goolf-\n2015a/lib/python2.7/site-packages/pandas-0.16.1-py2.7-linux-\nx86_64.egg/pandas/core/generic.py", line 2083, in __getattr__\n(type(self).__name__, name))\nAttributeError: \'DataFrame\' object has no attribute \'dtype\'\n
Run Code Online (Sandbox Code Playgroud)\n

当我加载 Python/3.5.2-intel-2016.u3 时, to_datetime 有效,但这会导致其他问题。我对 Unix 操作系统缺乏经验,并且由于我对集群上的软件没有管理员权限,因此我非常倾向于使用 2.7.12

\n

cs9*_*s95 6

这对我当前版本的 pandas 有效:

pd.to_datetime(df)

0   2015-02-04
1   2016-03-05
dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)

Pandasto_datetime特别支持从提供的 DataFrame 输入中解析日期时间列,前提是它包含专门的“年”、“月”和“日”列(顺序无关紧要,区分大小写也无关紧要)。

您可能正在使用旧版本的 pandas,在这种情况下我建议升级!


但是...
如果无法升级,您可以随时加入专栏并呼吁to_datetime系列。尝试加入列,然后应用pd.to_datetime

pd.to_datetime(df[['year', 'month', 'day']].astype(str).apply('-'.join, 1))

0   2015-02-04
1   2016-03-05
dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)