Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.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_Pandas_Numpy_Dataframe_Logic - Fatal编程技术网

增加python中的财务季度数

增加python中的财务季度数,python,pandas,numpy,dataframe,logic,Python,Pandas,Numpy,Dataframe,Logic,我有以下每季度更新的输入数据示例。我想将此季度数据添加到上一个季度表中,如输出中所示。我试了很多方法,但没有找到正确的方法 输入DF: 首先 2007年第一季度 2007年第一季度 2007年第一季度 2007年第二季度 2007年第二季度 2007年第二季度 2007年第三季度 2007年第三季度 2007年第三季度 2007年第4季度 2007年第4季度 2007年第4季度 2008年第一季度 2008年第一季度 2008年第一季度 输出: 最后一个 2007年第一季度2006年第四季度

我有以下每季度更新的输入数据示例。我想将此季度数据添加到上一个季度表中,如输出中所示。我试了很多方法,但没有找到正确的方法

输入DF:

首先
2007年第一季度
2007年第一季度
2007年第一季度
2007年第二季度
2007年第二季度
2007年第二季度
2007年第三季度
2007年第三季度
2007年第三季度
2007年第4季度
2007年第4季度
2007年第4季度
2008年第一季度
2008年第一季度
2008年第一季度

输出:


最后一个
2007年第一季度2006年第四季度
2007年第一季度2006年第四季度
2007年第一季度2006年第四季度
2007年第2季度2007年第1季度
2007年第2季度2007年第1季度
2007年第2季度2007年第1季度
2007年第三季度2007年第二季度
2007年第三季度2007年第二季度
2007年第三季度2007年第二季度
2007年第四季度2007年第三季度
2007年第四季度2007年第三季度
2007年第四季度2007年第三季度
2008年第一季度2007年第四季度
2008年第一季度2007年第四季度
2008年第一季度2007年第四季度


有人能帮我用python解决这个问题吗。我需要这个来进行进一步的分析。谢谢

您可以编写自定义函数来执行此操作:

def last_q(c):
    sp = c.split("Q")
    yr = sp[0]
    q = sp[1]
    if int(q) > 1:
        return "Q".join([yr,str(int(q)-1)])
    else:
        return "Q".join([str(int(yr)-1),"4"])
例如:

>a = pd.Series(["2017Q1", "2016Q4"])
>a
0    2017Q1
1    2016Q4
dtype: object

>a.apply(last_q)
0    2016Q4
1    2016Q3
dtype: object

如果列是字符串,请将其转换为
句点
对象:

df['FIRST'] = pd.PeriodIndex(df.FIRST, freq='Q')
接下来,使用
pd.PeriodIndex.shift

df['LAST'] = df['FIRST'].shift(-1)


如果您希望将其作为一行:

df['LAST'] = pd.PeriodIndex(pd.to_datetime(df['FIRST']) - pd.DateOffset(months=3),freq='Q')

数据类型是什么?数据帧和charMy答案也是一行且更短;)<代码>周期索引(df.FIRST,freq='Q').shift(-1)。关键是,一句话被高估了。没错。只是想增加答案的多样性。我投票赞成你的答案;)
df['LAST'] = pd.PeriodIndex(pd.to_datetime(df['FIRST']) - pd.DateOffset(months=3),freq='Q')