![](/img/trans.png)
[英]pandas - combine time and date from two dataframe columns to a datetime column
[英]Combine two columns to a datetime in pandas
我有一个这样的数据框
df.head(6):
year qtr measure
1990 3 1.813619
1990 4 1.809598
1991 1 1.814911
1991 2 1.808807
1991 3 1.820009
...
我怎么可能结合'year'和'qtr'来获取熊猫的datetime列? 它可以只是该季度的结束日期。
谢谢。
这是向量化版本(只要您的numpy> = 1.7):
df['date'] = (np.array(df.year.astype(str),dtype='datetime64[Y]')
+ np.array(df.qtr*3,dtype='timedelta64[M]')
- np.timedelta64(1,'D'))
print df
year qtr measure date
0 1990 3 1.813619 1990-09-30
1 1990 4 1.809598 1990-12-31
2 1991 1 1.814911 1991-03-31
3 1991 2 1.808807 1991-06-30
4 1991 3 1.820009 1991-09-30
[5 rows x 4 columns]
编辑:添加了说明:
因此,首先我在year列之外制作了一个datetime64 numpy数组:
print (np.array(df.year.astype(str),dtype='datetime64[Y]')
['1990' '1990' '1991' '1991' '1991']
这些是年份级别的datetime64 dtype,因此,如果我们在第一个日期加上一个月,则为'1990-01'+ 1个月。 因此,添加qtr * 3将创建一个YYYY-MM日期,该日期距离现在已经过了一个月:
print (np.array(df.year.astype(str),dtype='datetime64[Y]')
+ np.array(df.qtr*3,dtype='timedelta64[M]'))
['1990-10' '1991-01' '1991-04' '1991-07' '1991-10']
因此,如果我从“ 1990-10”中减去某天,我将到达上一个月底(这是您想要的月底):
print (np.array(df.year.astype(str),dtype='datetime64[Y]')
+ np.array(df.qtr*3,dtype='timedelta64[M]')
- np.timedelta64(1,'D'))
['1990-09-30' '1990-12-31' '1991-03-31' '1991-06-30' '1991-09-30']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.