错误:pandas上的代码数字列中断了字符串格式错误

时间:2015-07-28 19:01:16

标签: python pandas

我正在使用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_0和python 2.7.10 0。

1 个答案:

答案 0 :(得分:2)

我认为最简单的方法是在最终的连接数据帧上使用pandas本机日期时间功能,例如。

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

已更新