python - Pandas 公历日期到朱利安

标签 python pandas date datetime julian-date

我在转换数据框中的日期时遇到问题。

示例:

        col1                 col2
1     2018-10-02            2018-07-03 
      09:00:00+00           23:56:09.134+00
2     2018-07-03            2018-10-02
      23:56:09.134+00       09:00:00+00           


df.dtypes
col1    object
col2    object

由于我需要对数据集进行一些机器学习,因此我需要将日期转换为浮点型,即朱利安格式。

我尝试了很多事情,例如: Calculating julian date in python

df['col1'] = df['col1'].dt.strftime("%y%j")

上面的示例在将列转换为_datetime 后效果很好,但如果我传递 df[['col1', "col2"]] ,则会引发错误:

AttributeError: 'DataFrame' object has no attribute 'dt'

我对格式也有疑问,因为有些 obs 确实有毫秒,有些则没有。我想我可以放弃它们,但在这种情况下我也不知道该怎么做。

此外,我无法找到扩展到秒的朱利安格式(%y%j 不够,而且我不知道我需要格式的哪些字母)

我的 df 中有许多其他带有日期的列,因此有一种简单的方法可以转换所有这些列吗?

谢谢

最佳答案

您在寻找 pandas.Timestamp.to_julian_date

import pandas as pd

df = pd.DataFrame({'col1': ['2018-10-02 09:00:00+00','2018-07-03 23:56:09.134+00'],
                   'col2': ['2018-07-03 23:56:09.134+00','2018-10-02 09:00:00+00']})


df['col1'] = pd.to_datetime(df['col1'])
df['col2'] = pd.to_datetime(df['col2'])

df['col1'].apply(pd.Timestamp.to_julian_date)
# 0    2.458394e+06
# 1    2.458303e+06
# Name: col1, dtype: float64

返回的 float 表示天数,例如

df['col3'] = pd.to_datetime(['2018-07-02 12:46:32.257000+00:00', '2018-07-02 13:02:15.855000+00:00'])
t = df['col3'].apply(pd.Timestamp.to_julian_date).values
print(f"col3 delta in minutes: {(t[1]-t[0])*24*60}")
# col3 delta in minutes: 15.726633667945862

关于python - Pandas 公历日期到朱利安,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62302327/

相关文章:

python - 如何对列表中元素的所有实例进行索引、删除和计数?

python - 如何列出属于一组范围内的所有数字对?

python - 如何通过分隔符分割列,同时尊重要分隔的项目的相对位置

java - 将 Java 日期转换为 OffsetDateTime

python - pygame连续下雨

python - django 按多对多对象的计数排序

Javascript 从 toLocaleDateString 解析已知语言环境的日期

MySQL 选择给定日期位于表中存储的日期之间的行

python - scikit-learn 中对象没有属性,如何访问它?

python - 如何使用 Pandas 从某个时间戳获取 date_range ?