strptime()参数1必须是str,而不是系列时间序列转换

时间:2018-04-30 23:50:39

标签: python pandas datetime

我使用datetime从json读取时间, 单次代码效果很好,

 import datetime
 data=datetime.datetime.strptime('Apr 12, 2018', '%b %d, Y').strftime('%m/%d/%Y')

但是,当我尝试将其应用到数据框中时,我有错误。

 df_newtime=datetime.datetime.strptime(old_df['oldDate'],'%b %d, %Y').strftime('%m/%d/%Y')

错误为TypeError: strptime() argument 1 must be str, not Series

2 个答案:

答案 0 :(得分:1)

您可以通过两种方式实现:

方法1:

这里我们使用map

将字符串传递给函数
list(map(lambda x: datetime.datetime.strptime(x,'%b %d, %Y').strftime('%m/%d/%Y'), old_df['oldDate']))

方法2:

这里我们传递一个系列

pd.to_datetime(old_df['oldDate'], format='%b %d, %Y')

答案 1 :(得分:0)

old_df['oldDate']将返回包含日期的列,这是一个系列。

您可以通过在pandas中使用.apply函数将函数应用于数据帧的每一行来解决此问题。见here

def date_convert(date_to_convert):
     return datetime.datetime.strptime(date_to_convert, '%b %d, 
     %Y').strftime('%m/%d/%Y')

new_df['new_date'] = old_df['oldDate'].apply(date_convert)