我有一个带有纪元时间戳的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”)
的新列。
我很感激任何想法? 帕特里西奥
答案 0 :(得分:1)
您可以通过传递map
表达式作为参数来使用lambda
方法。
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
-------------------------
答案 1 :(得分:1)
使用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