Python/Pandas/Datetime:将列中的整个列表转换为日期时间
Posted
技术标签:
【中文标题】Python/Pandas/Datetime:将列中的整个列表转换为日期时间【英文标题】:Python/Pandas/Datetime: transform entire lists in a column to datetime 【发布时间】:2020-05-29 03:51:35 【问题描述】:我有一个具有以下结构的 Pandas 数据框:
title zeiten
0 Anker der Liebe ['2020-02-17T19:15:00+01:00']
1 DarkroomTödliche Tropfen ['2020-02-17T21:45:00+01:00']
2 Das geheime Leben der Bäume,['2020-02-13T16:45:00+01:00', '2020-02-14T16:45:00+01:00', '2020-02-15T16:45:00+01:00', '2020-02-16T16:45:00+01:00', '2020-02-17T16:45:00+01:00', '2020-02-18T16:45:00+01:00', '2020-02-19T16:45:00+01:00']
...
我想将“zeiten”列转换为日期时间,所以我很喜欢:
df['zeiten'] = df['zeiten'].apply(lambda x: pd.to_datetime(x)[0])
这适用于第 0 行和第 1 行,但不适用于第 2 行,因为只有列表的第一个日期被转换,所以输出如下所示:
title zeiten
0 Anker der Liebe 2020-02-17 19:15:00+01:00
1 DarkroomTödliche Tropfen 2020-02-17 21:45:00+01:00
2 Das geheime Leben der Bäume 2020-02-13 16:45:00+01:00
有没有办法将列中的整个列表转换为日期时间?
【问题讨论】:
【参考方案1】:转换所有值,不仅是第一个,因此删除了[0]
,如有必要,还将每个值的 DatetimeIndex 转换为list
:
df['zeiten'] = df['zeiten'].apply(lambda x: pd.to_datetime(x))
print (df)
title \
0 Anker der Liebe
1 DarkroomTodliche Tropfen
2 Das geheime Leben der Baume,
zeiten
0 DatetimeIndex(['2020-02-17 19:15:00+01:00'], d...
1 DatetimeIndex(['2020-02-17 21:45:00+01:00'], d...
2 DatetimeIndex(['2020-02-13 16:45:00+01:00', '2...
df['zeiten'] = df['zeiten'].apply(lambda x: pd.to_datetime(x).tolist())
print (df)
title \
0 Anker der Liebe
1 DarkroomTodliche Tropfen
2 Das geheime Leben der Baume,
zeiten
0 [2020-02-17 19:15:00+01:00]
1 [2020-02-17 21:45:00+01:00]
2 [2020-02-13 16:45:00+01:00, 2020-02-14 16:45:0...
【讨论】:
以上是关于Python/Pandas/Datetime:将列中的整个列表转换为日期时间的主要内容,如果未能解决你的问题,请参考以下文章