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:将列中的整个列表转换为日期时间的主要内容,如果未能解决你的问题,请参考以下文章

将列转换为行

将列从 varchar 更改为 int

将列从日期转换为日期时间

将列显示为行

如何动态地将列添加到 DataFrame?

Sequelize:将列类型更改为 ENUM