熊猫在行迭代时从字符串列表创建日期时间对象失败

时间:2019-08-23 19:27:31

标签: pandas list dataframe datetime

enter image description here我有一个pandas数据框,其中有一列包含格式为字符串的日期列表,例如: ['2019-08-19','2018-04-23']

我试图将这些列表转换为DateTime对象的列表,以便可以通过df.iterrows()迭代地将这些日期与格式相似的另一列中的日期进行比较。

我尝试过类似的事情:

<i>for index, row in merged_list.iterrows():`enter code here`
    scs_date = list(row["scs_date"])
    print(scs_date) 
    print(type(scs_date))
    l1 = pd.to_datetime(row["scs_date"]).dt.date.unique().tolist()<i>

但是它一直将列表分成单个字符,并抱怨它无法将项目转换成日期时间对象。

我也尝试过:

l1 = [datetime.strptime(date,"%Y-%m-%d").date() for date in scs_date]

再次它不起作用,并给了我这个错误:

“ ValueError:时间数据'['与格式'%Y-%m-%d'不匹配”     在此处输入代码

任何线索, 谢谢

更新:

我添加了一个示例数据框,如果有帮助的话。 最终目标是找出同一行的DAY_2列中是否存在DAY_1列中的任何日期。谢谢

https://i.stack.imgur.com/7HuSj.png

1 个答案:

答案 0 :(得分:0)

发布数据的实​​际样子将使您受益。

df =pd.DataFrame(
    [[['2019-08-19', '2018-04-23']],
     [['2019-08-19', '2018-04-23']],
     [['2019-08-19', '2018-04-23']],
     [['2019-08-19', '2018-04-23']]])


def f(v):
    return [datetime.datetime.strptime(date, '%Y-%m-%d') for date in v]

df[0] = df[0].map(f)
print(df)
                                            0
0  [2019-08-19 00:00:00, 2018-04-23 00:00:00]
1  [2019-08-19 00:00:00, 2018-04-23 00:00:00]
2  [2019-08-19 00:00:00, 2018-04-23 00:00:00]
3  [2019-08-19 00:00:00, 2018-04-23 00:00:00]