我有一个像这样的 DataFrame

         Sigma     JulianDay
 0       -9.05  2.451545e+06
 1      -10.99  2.451545e+06
 2       -8.42  2.451546e+06
 3       -8.92  2.451547e+06
 4      -10.79  2.451547e+06
 5       -9.53  2.451548e+06
我想将“JulianDay”列转换为公历日期。为此,我将 jdcal 1.3 package 与已定义的函数 jd_to_date(jd) 一起使用
d = df['JulianDay'].apply(jd_to_date)
df['GregDate'] = d
结果是:
        Sigma     JulianDay       GregDate
0       -9.05  2.451545e+06   (2000, 1, 1)
1      -10.99  2.451545e+06   (2000, 1, 1)
2       -8.42  2.451546e+06   (2000, 1, 2)
3       -8.92  2.451547e+06   (2000, 1, 3)
4      -10.79  2.451547e+06   (2000, 1, 3)
5       -9.53  2.451548e+06   (2000, 1, 4)
输出还告诉我,我正在处理一个对象类型:
Name: JulianDay, dtype: object
我现在的问题是,我想将 GregDate 列转换为日期时间,以便我能够将 GregDate 设置为索引。但是 dtype: object 在尝试时给我带来了麻烦
df['GregDate'] = pd.to_datetime(d)
我收到错误:
TypeError: <class 'tuple'> is not convertible to datetime
那么,我如何首先将“元组”列转换为其他内容,以便能够将其转换为日期时间?
谢谢

最佳答案

您可以使用 DataFrame 创建新的 constructor ,然后应用 to_datetime ,重要的是列名 yearmonthday :

a = pd.DataFrame(df['GregDate'].values.tolist(), columns=['year','month','day'])
print (a)
   year  month  day
0  2000      1    1
1  2000      1    1
2  2000      1    2
3  2000      1    3
4  2000      1    3
5  2000      1    4

df.GregDate = pd.to_datetime(a)
print (df)
   Sigma  JulianDay   GregDate
0  -9.05  2451545.0 2000-01-01
1 -10.99  2451545.0 2000-01-01
2  -8.42  2451546.0 2000-01-02
3  -8.92  2451547.0 2000-01-03
4 -10.79  2451547.0 2000-01-03
5  -9.53  2451548.0 2000-01-04

关于Python Pandas : convert <class 'tuple' > to datetime,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42551032/

10-09 17:11