熊猫-基于解析其他日期列添加新的日期列

时间:2020-07-20 15:15:59

标签: python pandas datetime parsing

我正在尝试获取Pandas数据框,解析代表日期的列,并以简单的mm / dd / yyyy格式向数据框添加新列。

以下是数据和库:

import pandas as pd
import datetime
from dateutil.parser import parse

df = pd.DataFrame([['row1', 'Tue Jun 16 19:05:44 UTC 2020', 'record1'], ['row2', 'Tue Jun 16 17:10:02 UTC 2020', 'record2'], ['row3', 'Fri Jun 12 17:52:37 UTC 2020', 'record3']], columns=["row", "checkin", "record"])

从这里的点点滴滴中,我精心制作了以下行以解析并添加新的数据列:

df['NewDate'] = df.apply(lambda row: datetime.date.strftime(parse(df['checkin']), "%m/%d/%Y"), axis = 1)

但是我最终在运行时遇到此错误,有人可以建议一个解决方法或更简单的方法来执行此操作,似乎它应该比我发现的更简单,更pythonic

TypeError :(“解析器必须是字符串或字符流,而不是Series”,“发生在索引0”)

感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以在没有apply

的情况下这样做
df['newDate'] = pd.to_datetime(df.checkin).dt.strftime("%m/%d/%Y")

    row                       checkin   record     newDate
0  row1  Tue Jun 16 19:05:44 UTC 2020  record1  06/16/2020
1  row2  Tue Jun 16 17:10:02 UTC 2020  record2  06/16/2020
2  row3  Fri Jun 12 17:52:37 UTC 2020  record3  06/12/2020

答案 1 :(得分:0)

只需将df['checkin']更改为row['checkin']如下

df['NewDate'] = df.apply(lambda row: datetime.date.strftime(parse(row['checkin']), "%m/%d/%Y"), axis = 1)