我使用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
答案 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)