如何将 df 中的列转换为具有日期时间格式的纪元,反之亦然?

Posted

技术标签:

【中文标题】如何将 df 中的列转换为具有日期时间格式的纪元,反之亦然?【英文标题】:How to convert a column in df having epoch with date time format and vice-versa? 【发布时间】:2019-07-16 14:37:51 【问题描述】:

1. 有值的 df

    0            1 
0 sun       | 1549628346168
1 goal      | 1532230566808
2 micheal   | 1533647352218

输出格式应为

    0            1 
0 sun       | 2019-02-02 Sat 21:16:20
1 goal      | 2019-02-02 Sat 21:16:20
2 micheal   | 2019-02-02 Sat 21:16:20

试过这个如何用文字表达一天

s = time/1000
datetime.datetime.fromtimestamp(s).strftime('%Y-%m-%d %H:%M:%S')

2.

有 df 值如何连接这两者并获得一个带有纪元时间的列

    Date           Time 
0  08-09-2017 |  05:00 PM
1  16-06-17   |  10:27 AM
2   04-07-17  |  03:11 PM

输出

    time
 1549628346168
 1532230566808
 1533647352218

【问题讨论】:

【参考方案1】:

to_datetimeunit='ms' 一起使用,然后将Series.dt.strftime%a 一起使用几天,同时检查http://strftime.org/:

df[1] = pd.to_datetime(df[1], unit='ms').dt.strftime('%Y-%m-%d %a %H:%M:%S')

print (df)
         0                        1
0      sun  2019-02-08 Fri 12:19:06
1     goal  2018-07-22 Sun 03:36:06
2  micheal  2018-08-07 Tue 13:09:12

编辑:

df['dt'] = pd.to_datetime(df['Date'] + ' ' + df['Time']).astype(np.int64) // 10**9
print (df)
         Date      Time          dt
0  08-09-2017  05:00 PM  1502298000
1    16-06-17  10:27 AM  1497608820
2    04-07-17  03:11 PM  1491577860

【讨论】:

如何将这些2018-07-07 Sat 05:02:00 转换为这些2018-07-07 05:02:00 使用此df['Date'] = pd.to_datetime(df['Date'], unit='ms').dt.strftime('%Y-%m-%d %H:%M:%S') 得到此错误不可转换值 2018-07-07 Sat 05:02:00 with the unit 'ms'跨度> @hukkemaaru - 删除 ms,它用于 unix 格式 @hukkemaaru - 用于转换日期时间,如1447160702320 - 检查this 肯定会这样做

以上是关于如何将 df 中的列转换为具有日期时间格式的纪元,反之亦然?的主要内容,如果未能解决你的问题,请参考以下文章

将具有日期和纪元格式值的字符串列转换为 postgresql/Tableau prep 中的日期列

如何使用 Java 将 unix 纪元的列转换为 Apache spark DataFrame 中的日期?

将具有日期格式的列中的所有行转换为文本格式

将Dataset中的列类型转换为python中具有特定格式的日期时间类型时出错

如何将 13 位 unix 纪元时间格式转换为日期时间?

将纪元时间转换为熊猫数据框中的格式化日期字符串