在Pandas DataFrame中将Epoch时间戳转换为格式化日期字符串
解决方法:用Pandas原生工具生成格式化日期字符串
嘿,我来帮你搞定这个问题!其实你完全可以不用依赖mdate.epoch2num,Pandas本身就提供了更直接高效的方法来处理Epoch时间戳,一步到位生成你想要的格式化日期字符串。
步骤1:将Epoch时间戳转为Pandas datetime类型
首先把你的timestamp列转换成Pandas可识别的datetime对象,这一步是基础:
import pandas as pd # 假设你的DataFrame名为data data['datetime'] = pd.to_datetime(data['timestamp'], unit='s')
这里unit='s'是因为你的时间戳是以秒为单位的Epoch时间,如果是毫秒级的时间戳,记得改成unit='ms'。
步骤2:生成格式化日期字符串列
有了datetime类型的列之后,直接用strftime()方法就能生成指定格式的字符串:
data['date_str'] = data['datetime'].dt.strftime('%Y-%m-%d')
这样date_str列就会出现类似2016-02-26的格式化日期字符串了——你的示例时间戳刚好都属于同一天哦。
如果你坚持用mdate.epoch2num的后续处理
要是你已经用mdate.epoch2num生成了date_num列,也可以基于这个列继续处理:
from matplotlib.dates import num2date # 先把数值型日期转成datetime对象 data['datetime'] = data['date_num'].apply(num2date) # 再生成格式化字符串 data['date_str'] = data['datetime'].dt.strftime('%Y-%m-%d')
完整测试代码
用你给出的示例DataFrame测试的完整代码如下:
import pandas as pd # 构造示例DataFrame data = pd.DataFrame({ 'timestamp': [1456407930, 1456407945, 1456407961, 1456407977, 1456407992, 1456408008, 1456408024, 1456408040, 1456408055, 1456408071, 1456408087, 1456408102] }) # 转换并生成格式化日期列 data['datetime'] = pd.to_datetime(data['timestamp'], unit='s') data['date_str'] = data['datetime'].dt.strftime('%Y-%m-%d') # 查看结果 print(data[['timestamp', 'date_str']])
内容的提问来源于stack exchange,提问作者PATRICIO GALEAS
相关产品推荐
相关产品推荐

