パンダは、どのようにデータフレーム内の前の値を持つ行のシーケンスを埋めるために

アレクサンダー・ポール

私はこの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
クアンホアン:

あなたの場合は、の組み合わせpivotstack

(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()
)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=351537&siteId=1