Pandas 公历日期为朱利安
Pandas gregorian date to julian
我在转换数据框中的日期时遇到问题。
示例:
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
由于我需要在数据集上做一些机器学习,我需要将日期转换为浮点数,因此采用 julian 格式。
我尝试了很多方法,例如:
或
df['col1'] = df['col1'].dt.strftime("%y%j")
上面的示例在转换 to_datetime 列后运行良好,但如果我传递 df[['col1', "col2"]]
:
则会引发错误
AttributeError: 'DataFrame' object has no attribute 'dt'
我的格式也有问题,因为有些 obs 确实有毫秒,有些则没有。我想我可以放弃它们,但在这种情况下我也不知道该怎么做。
我也找不到扩展到秒的 julian 格式(%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
返回的浮点数表示天数,例如
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
我在转换数据框中的日期时遇到问题。
示例:
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
由于我需要在数据集上做一些机器学习,我需要将日期转换为浮点数,因此采用 julian 格式。
我尝试了很多方法,例如:
df['col1'] = df['col1'].dt.strftime("%y%j")
上面的示例在转换 to_datetime 列后运行良好,但如果我传递 df[['col1', "col2"]]
:
AttributeError: 'DataFrame' object has no attribute 'dt'
我的格式也有问题,因为有些 obs 确实有毫秒,有些则没有。我想我可以放弃它们,但在这种情况下我也不知道该怎么做。
我也找不到扩展到秒的 julian 格式(%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
返回的浮点数表示天数,例如
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