Python 将季度和财政年度列合并到pandas中的日期列

Python 将季度和财政年度列合并到pandas中的日期列,python,pandas,python-datetime,Python,Pandas,Python Datetime,我有一个熊猫数据框架,其中财政年度列在一列中,季度列在另一列中 我想把它们合并成一列 格式为: Financial Year Financial Quarter 2015/16 1 2015/16 1 我计划在财政年度列的基础上创建一个日期列,然后用财政季度来抵消它 我的第一步是: df['date'] = pd.to_datetime(df['Financial Year'], format="%Y/%y") 但我在第二步上有点卡住了 是否有更好的方

我有一个熊猫数据框架,其中财政年度列在一列中,季度列在另一列中

我想把它们合并成一列

格式为:

Financial Year   Financial Quarter
2015/16          1
2015/16          1
我计划在财政年度列的基础上创建一个日期列,然后用财政季度来抵消它

我的第一步是:

df['date'] = pd.to_datetime(df['Financial Year'], format="%Y/%y")
但我在第二步上有点卡住了


是否有更好的方法在一次传递中组合来自多个列的字符串数据

IIUC您可以首先从
财政年度
列中提取年份,然后将其与
year1
year2
列一起使用:

from pandas.tseries.offsets import *

print df
  Financial Year  Financial Quarter
0        2015/16                  1
1        2015/16                  1

df[['year1', 'year2']] = pd.DataFrame([ x.split('/') for x in df['Financial Year'].tolist()])
df['year1'] = pd.to_datetime(df['year1'], format="%Y") 
df['year2'] = pd.to_datetime(df['year2'], format="%y") 
print df
  Financial Year  Financial Quarter      year1      year2
0        2015/16                  1 2015-01-01 2016-01-01
1        2015/16                  1 2015-01-01 2016-01-01

df['date1'] = df.apply(lambda x:(x['year1'] + BQuarterBegin(x['Financial Quarter'])), axis=1)
df['date2'] = df.apply(lambda x:(x['year2'] + BQuarterBegin(x['Financial Quarter'])), axis=1)
print df
  Financial Year  Financial Quarter      year1      year2      date1  \
0        2015/16                  1 2015-01-01 2016-01-01 2015-03-02   
1        2015/16                  1 2015-01-01 2016-01-01 2015-03-02   

       date2  
0 2016-03-01  
1 2016-03-01  

你可能在或
BQS
之后,我想在继续之前,你必须决定今年的形式,因为2015/16财年的
BQS
似乎太模糊了。Pandas在内部将时间戳表示为自
1970-01-01
以来的#秒,为此,它需要一个精确的时间点,而不是
2015/16
。一旦你解决了这个问题,就会有几种方法可以向前推进,比如上面@EdChum提供的方法。那太好了。非常感谢。解释清楚。很高兴能帮到你!祝你好运