错误:使用字符串格式的数字分栏符上的代码

2024-09-26 22:53:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用pandas读取一个表,其中一列的日期格式为YYYYMMMDD。在我迄今为止的所有尝试中,它都是以数字列的形式出现的。你知道吗

我可以先用笨拙的代码正确地(虽然速度很慢)消化它,但是现在的版本在某种程度上我不理解。你知道吗

所以,这起作用了:

treatments['month'] = treatments['INDATUMA'] % 10000
treatments['day'] = treatments['INDATUMA'] % 100
treatments['month'] = (treatments['month']-treatments['day'])/100  

(虽然上次是在较小的数据帧中运行的,但当前版本是在所有数据帧的串联上运行的。在较小的测试数据中,代码仍然可以正常运行,并且会中断整个数据。)

这将中断:

all_treatments['month'] = all_treatments.INDATUMA % 10000 // 100

这是错误消息:

File "treatments2_noiopro.py", line 92, in <module>
   all_treatments['month'] = all_treatments.INDATUMA % 10000 // 100
 File "/home/seidav/anaconda/lib/python2.7/site-packages/pandas/core/ops.py", line 532, in wrapper
   return left._constructor(wrap_results(na_op(lvalues, rvalues)),
 File "/home/seidav/anaconda/lib/python2.7/site-packages/pandas/core/ops.py", line 479, in na_op
   result[mask] = op(x[mask], y)
TypeError: not all arguments converted during string formatting

我在Linux下使用的是pandas 0.16.2 np19py26\ U 0和python 2.7.10 0版本。你知道吗


Tags: 数据代码inpy版本pandashomeline
1条回答
网友
1楼 · 发布于 2024-09-26 22:53:43

我认为最简单的方法是在最终连接的数据帧上使用pandas本机datetime功能

treatments['date'] = pandas.to_datetime(treatments['INDATUMA'])

#Now you can split up the date easy as pie
treatments['year'] = treatments['date'].dt.year
treatments['month'] = treatments['date'].dt.month
treatments['day'] = treatments['date'].dt.day

更新

相关问题 更多 >

    热门问题