Tengo un DataFrame objeto similar a esta:

       onset    length
1      2.215    1.3
2     23.107    1.3
3     41.815    1.3
4     61.606    1.3
...

Lo que me gustaría hacer es insertar una fila en una posición especificada por algunos el índice de valor y actualización de los siguientes índices en consecuencia. E. g.:

       onset    length
1      2.215    1.3
2     23.107    1.3
3     30.000    1.3  # new row
4     41.815    1.3
5     61.606    1.3
...

Cuál sería la mejor manera de hacer esto?

  • Es posible añadir fila en particular índice: df1 = pd.DataFrame(np.insert(df1.values, index+1, values=[" "] * len(df1.columns), axis=0),columns = df1.columns)
  • También se podría tomar la transposición y encontrar las columnas respectivas lugar.
InformationsquelleAutor Troas | 2013-04-08

3 Comentarios

  1. 47

    Usted puede cortar y usar concat para conseguir lo que quieres.

    line = DataFrame({"onset": 30.0, "length": 1.3}, index=[3])
    df2 = concat([df.iloc[:2], line, df.iloc[3:]]).reset_index(drop=True)

    Esto producirá el dataframe en su ejemplo de la salida. Hasta donde yo soy consciente, concat es el mejor método para lograr una inserción tipo de operación en los pandas, pero es cierto que de ningún modo soy un pandas de expertos.

  2. 15

    Me resulta más legible para ordenar en lugar de cortar y concatenar.

    line = DataFrame({"onset": 30.0, "length": 1.3}, index=[2.5])
    df = df.append(line, ignore_index=False)
    df = df.sort_index().reset_index(drop=True)
  3. 0
    line = DataFrame({"onset": 30.0, "length": 1.3}, index=[3])
    df2 = concat([df.iloc[:2], line, df.iloc[3:]]).reset_index(drop=True)

    esta solución es la sustitución de que los valores del índice, sólo quiero agregar un índice sin que la sustitución de los valores del índice.

Dejar respuesta

Please enter your comment!
Please enter your name here