使用函数转换日期时间列

Convert datetime column using function

我有一个包含日期时间列的数据框。 我正在尝试从 获得最佳答案以处理我的数据框。

def sunrise(timee):

 sun = ephem.Sun()
 observer = ephem.Observer()
 # ↓ Define your coordinates here ↓
 observer.lat, observer.lon, observer.elevation = '48.730302', '9.149483', 400
 # ↓ Set the time (UTC) here ↓
 observer.date = timee
 sun.compute(observer)
 current_sun_alt = sun.alt
 return current_sun_alt * 180 / math.pi

ClimateDF.insert(1, 'datetime', pd.to_datetime(ClimateDF.index)) #Index is date time!
ClimateDF['datetime'] = ClimateDF['datetime'].dt.strftime('%Y/%m/%d %H:%M:%S')
ClimateDF['datetime'] = sunrise(ClimateDF['datetime']) 

我想不通。我错过了什么? 我目前得到:

 raise TypeError("cannot convert the series to " "{0}".format(str(converter)))
TypeError: cannot convert the series to <class 'float'>

你应该 return current_sun_alt * 180 / math.pi 而不是打印它。

您的问题中似乎缺少一些代码,因为您有 def sunrise(timee): 但根本没有函数体。但是,我在这里看到一个问题:

ClimateDF['datetime'] = ClimateDF['datetime'].dt.strftime('%Y/%m/%d %H:%M:%S')
ClimateDF['datetime'] = sunrise(ClimateDF['Day/Night2']) 

您永远不会创建名为 Day/Night2 的列。你是想用那个名字创建一个列吗? ClimateDF['Day/Night2'] = sunrise(ClimateDF['datetime'])