アレクサンダー・ポール
私はこのdatarameを持っていると仮定
df =pd.DataFrame([[1, 1, 0, 3], [1, 1, 1, 4], [1, 1, 3, 6], [2, 1, 0, 0], [2, 1, 3, 6]],
columns=["id","code","date","count"])
出力:
id code date count
0 1 1 0 3
1 1 1 1 4
2 1 1 3 6
3 2 1 0 0
4 2 1 3 6
私はidとコードに基づいて前回のカウントで(これは0と3の間にある)欠落している日付番号を記入します。意図した出力:
id code date count
0 1 1 0 3
1 1 1 1 4
2 1 1 2 4
3 1 1 3 6
4 2 1 0 0
5 2 1 1 0
6 2 1 2 0
7 2 1 3 6
クアンホアン:
あなたの場合は、の組み合わせpivot
とstack
:
(df.pivot_table(index=['id','code'],
columns='date',
values='count')
.reindex(np.arange(4), axis=1)
.ffill(1)
.stack()
.reset_index(name='count')
)
出力:
id code date count
0 1 1 0 3.0
1 1 1 1 4.0
2 1 1 2 4.0
3 1 1 3 6.0
4 2 1 0 0.0
5 2 1 1 0.0
6 2 1 2 0.0
7 2 1 3 6.0
アップデートは:あなたが複数持っている場合はcount
、列を、それは少しトリッキーです。
(df.pivot_table(index=['id','code'],
columns='date')
.stack(level=0)
.reindex(np.arange(4), axis=1)
.ffill(1)
.unstack(level=-1)
.stack(level=0)
.reset_index()
)