【问题标题】: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”)的新列。

我会很感激任何想法? 帕特里西奥

【问题讨论】:

标签: python pandas string datetime timestamp


【解决方案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,谢谢,你的也可以接受 :)
    猜你喜欢
    • 1970-01-01
    • 2019-07-21
    • 2017-05-20
    • 2016-10-29
    • 2012-04-03
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    相关资源
    最近更新 更多