Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将两列合并为熊猫中的日期时间_Python_Datetime_Pandas - Fatal编程技术网

Python 将两列合并为熊猫中的日期时间

Python 将两列合并为熊猫中的日期时间,python,datetime,pandas,Python,Datetime,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 ... 我怎么可能结合“年”和“qtr”来获得熊猫中的datetime列?它可能只是季度的结束日期 谢谢。这是一个矢量化版本(只要您有numpy>=1.7): 编辑:添加解释: 首先,

我有一个这样的数据帧

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
...
我怎么可能结合“年”和“qtr”来获得熊猫中的datetime列?它可能只是季度的结束日期


谢谢。

这是一个矢量化版本(只要您有numpy>=1.7):

编辑:添加解释:

首先,我从年份列中创建一个datetime64 numpy数组:

print (np.array(df.year.astype(str),dtype='datetime64[Y]')

['1990' '1990' '1991' '1991' '1991']
这些是年份级别的datetime64数据类型,因此,如果我们在第一个日期上加上一个月,它将是“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”中减去一天,我将得到上一个月末(这是您想要的月末):


这是一个矢量化版本(只要您的numpy>=1.7):

编辑:添加解释:

首先,我从年份列中创建一个datetime64 numpy数组:

print (np.array(df.year.astype(str),dtype='datetime64[Y]')

['1990' '1990' '1991' '1991' '1991']
这些是年份级别的datetime64数据类型,因此,如果我们在第一个日期上加上一个月,它将是“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”中减去一天,我将得到上一个月末(这是您想要的月末):


你能不能在数据框中添加一些代码,比如d={'year':yearlist,'qtr':quaterlist,'measure':measurelist}如果你多提供一些代码,v就可以解决这个问题。你能在数据框中添加一些代码,比如我们如何获取年份和qtr。.是这样的d={'year':yearlist,'qtr':quaterlist,'measure':measurelist}如果你提供多一点代码,v就能解决这个问题,谢谢!非常聪明的方法。您想解释一下为什么使用np.timedelta64(1,'D'),但得到了月底日期吗?是的,我刚刚编辑了我的答案以包含一个解释。谢谢!非常聪明的方法。您想解释一下为什么使用np.timedelta64(1,'D'),但得到了月底日期吗?是的,我刚刚编辑了我的答案以包含一个解释。