我給自己一個pandas資料框,其中包含緯度、經度(整數型別)和日期列(datetime64[ns, UTC]- 根據函式的需要)。我使用以下行來生成太陽方位角的新列:
daa['azimuth'] = daa.apply(lambda row: get_azimuth(row['latitude'], row['longitude'], row['date']), axis=1)
它崩潰了,我不知道為什么,我唯一知道的是日期存在問題:
File "pandas\_libs\tslibs\timestamps.pyx", line 1332, in pandas._libs.tslibs.timestamps.Timestamp.__new__
TypeError: an integer is required
如果有人知道我應該如何處理約會,那就太好了,謝謝。
uj5u.com熱心網友回復:
這可以追溯到 中的錯誤pandas,請參閱問題 #32174。pysolar.solar.get_azimuth呼叫.utctimetuple()給定日期時間物件(或 pd.Timestamp)的方法,該方法失敗:
import pandas as pd
s = pd.to_datetime(pd.Series(["2020-01-01", "2020-01-02"])).dt.tz_localize('UTC')
s.iloc[0]
Out[3]: Timestamp('2020-01-01 00:00:00 0000', tz='UTC')
s.iloc[0].utctimetuple()
Traceback (most recent call last):
File "<ipython-input-4-f5e393f18fdb>", line 1, in <module>
s.iloc[0].utctimetuple()
File "pandas\_libs\tslibs\timestamps.pyx", line 1332, in pandas._libs.tslibs.timestamps.Timestamp.__new__
TypeError: an integer is required
您可以通過將 Pandas Timestamp 轉換為 Python datetime 物件來解決,utctimetuple按預期作業。對于給定的示例,您可以使用
daa.apply(lambda row: get_azimuth(row['latitude'], row['longitude'], row['date'].to_pydatetime()), axis=1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/342514.html
