次のデータがあるとします。
data = {'a' : [1,1,1,8,8,3,3,3,3,4,4] }
df = pd.DataFrame(data)
現在の順序が維持されるように、全体を n groupsだけ下にシフトしたいと思います。n=1 のシフトに必要な出力は次のようになります。
desired_output = {'a': [NaN,NaN,NaN,1,1,8,8,8,8,3,3] }
desired_output_df = pd.DataFrame(desired_output)
n=2 のシフトは次のようになります。
desired_output = {'a': [NaN,NaN,NaN,NaN,NaN,1,1,1,1,8,8] }
desired_output_df = pd.DataFrame(desired_output)
私は groupby/transform/apply をいじっていますが、これまで何も機能していません。グループ化してからシフトすると、各グループがシフトされ、次の出力が得られます。
NOT_desired_output = {'a' : [NaN, 1, 1, NaN, 8, NaN, 3,3,3, NaN, 4]}
反復することで力ずくで攻撃することもできますが、もっと良い解決策があると確信しています。何か案は?