在python 2.7.4 Anaconda上将问题从系列转换为str

时间:2015-01-30 21:46:01

标签: python python-2.7 pandas data-cleansing

import sys
sys.version
  

'2.7.8 | Anaconda 2.1.0(64位)| (默认,2014年7月2日,15:12:11)[MSC   v.1500 64 bit(AMD64)]'

from pandas import DataFrame,Series
import datetime

id = [199995,199996,199997]
hour = [14102101,14102102,14102103]
df = pd.DataFrame({'id':Series(id),'hour':Series(hour)})
kk=df.hour.apply(str)
df_dt=datetime.datetime.strptime(kk,"%y%m%d%H").date()
  

TypeError:必须是字符串,而不是系列

我从关系数据库的时间维度表中获取了这些数据,因此我无法改变导入格式。如何解决此错误?

2 个答案:

答案 0 :(得分:1)

df['hour_dt']=df.hour.apply(lambda x:datetime.datetime.strptime(x.astype(str),"%y%m%d%H") )

答案 1 :(得分:0)

您正在将kk传递给您的strptime(...),这是一个期待字符串的系列。如果您希望打印出每个日期,您可以迭代系列中的行:

for i in range(len(kk)):
    df_dt=datetime.datetime.strptime(kk[i],"%y%m%d%H")
    print(df_dt)

会给你

2014-10-21 01:00:00
2014-10-21 02:00:00
2014-10-21 03:00:00
2014-10-21 03:00:00

但是,我猜你想要的输出是什么,因为你没有在原来的问题中指明。

修改

使用在IPython Notebook中运行的%timeit模块,与for相比,apply.(lambda ...)循环的速度提高了3倍多。

1000 loops, best of 3: 91.6 µs per loop
1000 loops, best of 3: 345 µs per loop