将季度和财政年度列合并到 pandas 中的日期列
Combining quarter and financial year columns into date column in pandas
我有一个 pandas 数据框,其中财政年度列在一列中,季度列在另一列中。
我想将它们合并成一个列。
格式为:
Financial Year Financial Quarter
2015/16 1
2015/16 1
我正计划基于“财政年度”列创建一个日期列,然后按“财政季度”对其进行抵消。
我的第一步是:
df['date'] = pd.to_datetime(df['Financial Year'], format="%Y/%y")
但是我在第二步有点卡住了。
是否有更好的方法将来自多个列的字符串数据一次组合起来?
IIUC 您可以先从 Financial Year
列中提取年份,然后将 BQuarterBegin
and apply
与 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
我有一个 pandas 数据框,其中财政年度列在一列中,季度列在另一列中。
我想将它们合并成一个列。
格式为:
Financial Year Financial Quarter
2015/16 1
2015/16 1
我正计划基于“财政年度”列创建一个日期列,然后按“财政季度”对其进行抵消。
我的第一步是:
df['date'] = pd.to_datetime(df['Financial Year'], format="%Y/%y")
但是我在第二步有点卡住了。
是否有更好的方法将来自多个列的字符串数据一次组合起来?
IIUC 您可以先从 Financial Year
列中提取年份,然后将 BQuarterBegin
and apply
与 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