python 年份_python – 将年份和年份转换为pandas中的datetime index

您可以使用

NumPy datetime64/timedelta64 arithmetic查找所需的日期:

In [97]: (np.asarray(df['year'], dtype='datetime64[Y]')-1970)+(np.asarray(df['doy'], dtype='timedelta64[D]')-1)

Out[97]:

array(['2000-02-18', '2000-03-05', '2000-03-21', '2001-04-07',

'2001-04-23', '2001-05-09', '2001-05-25', '2001-06-10'], dtype='datetime64[D]')

由于日期的各个部分(例如年,月,日,周,小时等)的组成日期是一个常见的问题,这里有一个实用功能,可以使它更容易:

def compose_date(years, months=1, days=1, weeks=None, hours=None, minutes=None,

seconds=None, milliseconds=None, microseconds=None, nanoseconds=None):

years = np.asarray(years) - 1970

months = np.asarray(months) - 1

days = np.asarray(days) - 1

types = ('

'

vals = (years, months, days, weeks, hours, minutes, seconds,

milliseconds, microseconds, nanoseconds)

return sum(np.asarray(v, dtype=t) for t, v in zip(types, vals)

if v is not None)

df = pd.DataFrame({'doy': [49, 65, 81, 97, 113, 129, 145, 161],

'year': [2000, 2000, 2000, 2001, 2001, 2001, 2001, 2001]})

df.index = compose_date(df['year'], days=df['doy'])

产量

doy year

2000-02-18 49 2000

2000-03-05 65 2000

2000-03-21 81 2000

2001-04-07 97 2001

2001-04-23 113 2001

2001-05-09 129 2001

2001-05-25 145 2001

2001-06-10 161 2001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值