将unix时间转换为pandas数据框中可读的日期

2025-02-24 09:29:00
admin
原创
69
摘要:问题描述:我有一个包含 unix 时间和价格的数据框。我想转换索引列,以便它以人类可读的日期显示。举例来说,我在索引列中有date但1349633705我希望它显示为10/07/2012(或至少10/07/2012 18:15)。就某些背景而言,下面是我正在使用的代码以及我已经尝试过的代码:import js...

问题描述:

我有一个包含 unix 时间和价格的数据框。我想转换索引列,以便它以人类可读的日期显示。

举例来说,我在索引列中有date1349633705我希望它显示为10/07/2012(或至少10/07/2012 18:15)。

就某些背景而言,下面是我正在使用的代码以及我已经尝试过的代码:

import json
import urllib2
from datetime import datetime
response = urllib2.urlopen('http://blockchain.info/charts/market-price?&format=json')
data = json.load(response)   
df = DataFrame(data['values'])
df.columns = ["date","price"]
#convert dates 
df.date = df.date.apply(lambda d: datetime.strptime(d, "%Y-%m-%d"))
df.index = df.date   

正如您所看到的,我
df.date = df.date.apply(lambda d: datetime.strptime(d, "%Y-%m-%d"))在这里使用了,但由于我处理的是整数,而不是字符串,因此它不起作用。我想我需要使用,datetime.date.fromtimestamp但我不太确定如何将其应用于整个df.date

谢谢。


解决方案 1:

这些似乎是自纪元以来的秒数。

In [20]: df = DataFrame(data['values'])

In [21]: df.columns = ["date","price"]

In [22]: df
Out[22]: 
<class 'pandas.core.frame.DataFrame'>
Int64Index: 358 entries, 0 to 357
Data columns (total 2 columns):
date     358  non-null values
price    358  non-null values
dtypes: float64(1), int64(1)

In [23]: df.head()
Out[23]: 
         date  price
0  1349720105  12.08
1  1349806505  12.35
2  1349892905  12.15
3  1349979305  12.19
4  1350065705  12.15
In [25]: df['date'] = pd.to_datetime(df['date'],unit='s')

In [26]: df.head()
Out[26]: 
                 date  price
0 2012-10-08 18:15:05  12.08
1 2012-10-09 18:15:05  12.35
2 2012-10-10 18:15:05  12.15
3 2012-10-11 18:15:05  12.19
4 2012-10-12 18:15:05  12.15

In [27]: df.dtypes
Out[27]: 
date     datetime64[ns]
price           float64
dtype: object

解决方案 2:

如果您尝试使用:

df[DATE_FIELD]=(pd.to_datetime(df[DATE_FIELD],***unit='s'***))

并收到错误:

“pandas.tslib.OutOfBoundsDatetime:无法转换单位为‘s’的输入”

这意味着DATE_FIELD没有以秒为单位指定。

就我而言,它是毫秒- EPOCH time

转换工作如下:

df[DATE_FIELD]=(pd.to_datetime(df[DATE_FIELD],unit='ms')) 

解决方案 3:

假设我们导入了pandas as pd并且df是我们的数据框

pd.to_datetime(df['date'], unit='s')

对我有用。

解决方案 4:

Pandas 文档提供了此格式和其他格式的示例,但未包含在上述任何先前的答案中。链接:
https ://pandas.pydata.org/docs/reference/api/pandas.to_datetime.html

代码

pd.to_datetime(1490195805, unit='s')

时间戳('2017-03-22 15:16:45')

pd.to_datetime(1490195805433502912, unit='ns')

时间戳('2017-03-22 15:16:45.433502912')

解决方案 5:

或者,通过更改上面代码的一行:

# df.date = df.date.apply(lambda d: datetime.strptime(d, "%Y-%m-%d"))
df.date = df.date.apply(lambda d: datetime.datetime.fromtimestamp(int(d)).strftime('%Y-%m-%d'))

它也应该可以工作。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2757  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1693  
  在全球化的浪潮下,企业的业务范围不断拓展,跨文化协作变得愈发普遍。不同文化背景的团队成员在合作过程中,由于语言、价值观、工作习惯等方面的差异,往往会面临诸多沟通挑战。而产品生命周期管理(PLM)系统作为企业管理产品全生命周期的重要工具,如何有效支持跨文化协作成为了关键问题。通过合理运用沟通策略,PLM系统能够在跨文化团...
plm是什么软件   15  
  PLM(产品生命周期管理)系统在企业的产品研发、生产与管理过程中扮演着至关重要的角色,其中文档版本控制是确保产品数据准确性、完整性和可追溯性的关键环节。有效的文档版本控制能够避免因版本混乱导致的错误、重复工作以及沟通不畅等问题,提升企业整体的运营效率和产品质量。接下来,我们将深入探讨 PLM 系统实现文档版本控制的 6...
plm是什么意思   19  
  PLM(产品生命周期管理)项目管理旨在通过有效整合流程、数据和人员,优化产品从概念到退役的整个生命周期。在这个过程中,敏捷测试成为确保产品质量、加速交付的关键环节。敏捷测试强调快速反馈、持续改进以及与开发的紧密协作,对传统的测试流程提出了新的挑战与机遇。通过对测试流程的优化,能够更好地适应PLM项目的动态变化,提升产品...
plm管理系统   18  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用