Pandas cómo llenar secuencia de filas con el valor anterior en la trama de datos

Alexander Paul

Supongamos que tengo este 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"])

Salida:

   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

Quiero llenar el número de fecha que falta (éste se encuentra entre 0 y 3) con el recuento anterior basado en ID y el código. resultado previsto:

   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
Quang Hoang:

En su caso, una combinación de pivoty stack:

(df.pivot_table(index=['id','code'],
               columns='date',
               values='count')
   .reindex(np.arange(4), axis=1)
   .ffill(1)
   .stack()
   .reset_index(name='count')
)

Salida:

   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

Actualización : si tiene más de uno countcolumnas, es un poco más complejo:

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=351540&siteId=1
Recomendado
Clasificación