将纪元时间转换为熊猫数据框中的格式化日期字符串
Posted
技术标签:
【中文标题】将纪元时间转换为熊猫数据框中的格式化日期字符串【英文标题】:Convert epoch time to formatted date string in pandas dataframe 【发布时间】:2018-10-14 07:26:16 【问题描述】:我有一个带有纪元时间戳的 DataFrame,我想创建一个带有格式化日期字符串的新列。
index timestamp
0 1456407930
1 1456407945
2 1456407961
3 1456407977
4 1456407992
5 1456408008
6 1456408024
7 1456408040
8 1456408055
9 1456408071
10 1456408087
11 1456408102
首先,我使用
成功地将时间戳转换为日期时间格式data['date_num'] = mdate.epoch2num(data['timestamp'])
但是我没有找到一个函数来获取一个带有字符串格式日期(such as “%Y-%m-%d”)
的新列。
我会很感激任何想法? 帕特里西奥
【问题讨论】:
df.timestamp=pd.to_datetime(df.timestamp,unit='s').dt.date
***.com/questions/19231871/…
【参考方案1】:
您可以通过将lambda
表达式作为参数传递来使用map
方法。
df['new_column'] = df['timestamp'].map(lambda val: datetime.datetime.fromtimestamp(val).strftime('%Y-%m-%d'))
输出
timestamp new_column
0 1456407930 2016-02-25
1 1456407945 2016-02-25
-------------------------
【讨论】:
【参考方案2】:用pd.to_datetime
指定unit='s'
。然后使用pd.Series.dt.strftime
。
df['date'] = pd.to_datetime(df['timestamp'], unit='s')\
.dt.strftime('%Y-%m-%d')
print(df)
index timestamp date
0 0 1456407930 2016-02-25
1 1 1456407945 2016-02-25
2 2 1456407961 2016-02-25
3 3 1456407977 2016-02-25
4 4 1456407992 2016-02-25
5 5 1456408008 2016-02-25
6 6 1456408024 2016-02-25
7 7 1456408040 2016-02-25
8 8 1456408055 2016-02-25
9 9 1456408071 2016-02-25
10 10 1456408087 2016-02-25
11 11 1456408102 2016-02-25
【讨论】:
简单、漂亮的解决方案并点赞。我知道写一个正确答案时的感觉,但没有人为它投赞成票,以表彰为回答它所投入的时间和精力。 @MihaiAlexandru-Ionut,谢谢,你的也可以接受 :)以上是关于将纪元时间转换为熊猫数据框中的格式化日期字符串的主要内容,如果未能解决你的问题,请参考以下文章
将具有日期和纪元格式值的字符串列转换为 postgresql/Tableau prep 中的日期列
如何将熊猫数据框中的嵌套逗号分隔列转换为Python中的特定格式