我有兩個資料集,一年和一個月。兩者都在掩碼陣列中。我也有一個觀察日,它始終是 15。我想根據這三個值創建一個帶有日期時間的掩碼陣列。
只需使用:
obs_Date = np.datetime64(year, month, 15)
似乎不是一回事。如何根據年份和月份陣列以及我擁有的日期值創建日期時間格式?
uj5u.com熱心網友回復:
numpy datetime 的構造與Python datetime有點不同,例如來自 ISO 格式的字串,例如
import numpy.ma as ma
years = ma.array([2020, 2021, 2022], mask=[0,1,0])
months = ma.array([1, 3, 7], mask=[0,1,0])
day=15
# masks must be identical
assert (years.mask == months.mask).all()
dates = ma.array(
[f'{y}-{m:02d}-{day}' for y, m in zip(years.data, months.data)],
dtype='datetime64[D]',
mask=years.mask
)
# dates
# masked_array(data=[datetime.date(2020, 1, 15), --,
# datetime.date(2022, 7, 15)],
# mask=[False, True, False],
# fill_value=numpy.datetime64('NaT'),
# dtype='datetime64[D]')
使用pandas.to_datetime 的另一個選項,將掩碼值保持為NaT(非時間):
import pandas as pd
dates = pd.to_datetime(
pd.DataFrame({'year': years, 'month': months, 'day': [day]*years.size})
)
# dates
# 0 2020-01-15
# 1 NaT
# 2 2022-07-15
# dtype: datetime64[ns]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/409558.html
標籤:
上一篇:將某些列型別從日期時間更改為日期
