python df:将日期索引从毫秒转换为天

Posted

技术标签:

【中文标题】python df:将日期索引从毫秒转换为天【英文标题】:python df: convert date index from milliseconds to days 【发布时间】:2020-07-23 20:07:19 【问题描述】:

我在将日期索引从毫秒转换为像 2020 年 4 月 21 日这样的正常形式时非常吃力。我可以使用datetime.utcfromtimestamp(int(1586563200000)/1000)将单个值转换为日期时间,这给了我datetime.datetime(2020, 4, 11, 0, 0)

然后我使用tsp.strftime("%Y-%m-%d") 删除小时/秒,但徒劳无功,因为我的输出是2020-04-11 23:59:59.999

我的问题是我有一个 pandas 数据框,而我为日期索引尝试的大多数操作都不起作用。所以我尝试循环遍历日期并重新索引结果,但这似乎非常低效。

no = float(data.close_time.count())
time = []
x= 0
while x != no:
    a = data.close_time[x]
    tsp = datetime.utcfromtimestamp(int(a)/1000)
    time.append(tsp)
    x += 1
data.index = time

非常感谢任何帮助,请解决这个问题!谢谢你

【问题讨论】:

请提供minimal reproducible example。 【参考方案1】:

您可以查看pandas.to_datetime

>>> pd.to_datetime(1490195805, unit='s')
Timestamp('2017-03-22 15:16:45')
>>> pd.to_datetime(1490195805433502912, unit='ns')
Timestamp('2017-03-22 15:16:45.433502912')

如果你想按小时计算

>>> pd.to_datetime(1490195805//3600*3600, unit='s')
Timestamp('2017-03-22 15:00:00')

如果你想要一天一天

>>> pd.to_datetime(1490195805//(3600*24)*3600*24, unit='s')
Timestamp('2017-03-22 00:00:00')

类似于毫秒。

【讨论】:

感谢感谢' time = pd.to_datetime(data.close_time//(3600*24)*3600*24, unit='s') data.index = time' 这给了我一个错误。但是循环工作非常感谢。不循环可以吗?

以上是关于python df:将日期索引从毫秒转换为天的主要内容,如果未能解决你的问题,请参考以下文章

将 datetime64[ns] 索引转换为日期 pandas 以进行比较

Python:将整数转换为日期时间戳

使用 PySpark 将日期和时间字符串转换为时间戳时如何保留毫秒?

Python麻烦将毫秒转换为日期时间并返回

将毫秒转换为天小时分钟

计算Java中的日期差异