繁体   English   中英

将两列合并到熊猫的日期时间

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM