我正在使用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。
答案 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
已更新