如何将Pandas的日期时间索引转换为时间戳数组?

kgsdhlau  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(167)

我一直在研究这个问题,但我想我已经搞糊涂了Pandas代表日期和时间的各种方式。
我导入了一个csv格式的数据,其中包括年、月、日等列,然后将其转换为日期时间列,然后将其设置为索引--一切都很好。

# import and name columns
epwNames = ['year','month','day','hour','minute','Datasource','DryBulb {C}','DewPoint {C}','RelHum {%}','Atmos Pressure {Pa}','ExtHorzRad {Wh/m2}','ExtDirRad {Wh/m2}','HorzIRSky {Wh/m2}','GloHorzRad {Wh/m2}','DirNormRad {Wh/m2}','DifHorzRad {Wh/m2}','GloHorzIllum {lux}','DirNormIllum {lux}','DifHorzIllum {lux}','ZenLum {Cd/m2}','WindDir {deg}','WindSpd {m/s}','TotSkyCvr {.1}','OpaqSkyCvr {.1}','Visibility {km}','Ceiling Hgt {m}','PresWeathObs','PresWeathCodes','Precip Wtr {mm}','Aerosol Opt Depth {.001}','SnowDepth {cm}','Days Last Snow','Albedo {.01}','Rain {mm}','Rain Quantity {hr}']
Weather = pd.read_csv(filepath,header=None,skiprows=8,names=epwNames)

# Format timestamp index
Weather['Datetime'] = pd.to_datetime(Weather[['year','month','day','hour']])
Weather.index = Weather['Datetime']

我有另一个使用datetime的函数,但目前设置为需要一个Timestamp数组-这可能是也可能不是最好的方法,但例如我有这样的东西,其中'timestamp'是传入的数组:

get_julianDate = np.vectorize(pd.Timestamp.to_julian_date)
julianDay = get_julianDate(timestamp)

如果我通过传入DateTimeIndex来运行它,我会得到一个属性错误,即 'numpy.datetime64'对象没有属性'year',这看起来很奇怪。
我已经尝试了一些简单的转换,比如将DateTimeIndex传递给pd.Timestamp,但是我想这太简单了。有简单的方法可以做到这一点吗?

bogh5gae

bogh5gae1#

有两种方法可能有效:

get_julianDate(timestamp.to_list())
# or use pd.Index.map directly:
timestamp.map(pd.Timestamp.to_julian_date)

相关问题