Agregue una nueva fila a un Pandas DataFrame con un nombre de índice específico

Estoy tratando de agregar una nueva fila al DataFrame con un nombre de índice específico 'e' .

  number variable values a NaN bank true b 3.0 shop false c 0.5 market true d NaN government true 

He intentado lo siguiente, pero está creando una nueva columna en lugar de una nueva fila.

 new_row = [1.0, 'hotel', 'true'] df = df.append(new_row) 

Aún no entiendo cómo insertar la fila con un índice específico. Estaremos agradecidos por cualquier sugerencia.

Puede usar df.loc[_not_yet_existing_index_label_] = new_row .

Manifestación:

 In [3]: df.loc['e'] = [1.0, 'hotel', 'true'] In [4]: df Out[4]: number variable values a NaN bank True b 3.0 shop False c 0.5 market True d NaN government True e 1.0 hotel true 

Si utiliza este método, no puede agregar una fila con un valor de índice ya existente (duplicado) (etiqueta); en este caso se actualizará una fila con esta etiqueta de índice.


ACTUALIZAR:

Esto podría no funcionar en Pandas / Python3 recientes si el índice es un DateTimeIndex y el índice de la nueva fila no existe.

funcionará si especificamos los valores de índice correctos.

Demo (usando pandas: 0.23.4 ):

 In [17]: ix = pd.date_range('2018-11-10 00:00:00', periods=4, freq='30min') In [18]: df = pd.DataFrame(np.random.randint(100, size=(4,3)), columns=list('abc'), index=ix) In [19]: df Out[19]: abc 2018-11-10 00:00:00 77 64 90 2018-11-10 00:30:00 9 39 26 2018-11-10 01:00:00 63 93 72 2018-11-10 01:30:00 59 75 37 In [20]: df.loc[pd.to_datetime('2018-11-10 02:00:00')] = [100,100,100] In [21]: df Out[21]: abc 2018-11-10 00:00:00 77 64 90 2018-11-10 00:30:00 9 39 26 2018-11-10 01:00:00 63 93 72 2018-11-10 01:30:00 59 75 37 2018-11-10 02:00:00 100 100 100 In [22]: df.index Out[22]: DatetimeIndex(['2018-11-10 00:00:00', '2018-11-10 00:30:00', '2018-11-10 01:00:00', '2018-11-10 01:30:00', '2018-11-10 02:00:00'], dtype='da tetime64[ns]', freq=None) 

Use la función anexar convirtiendo una estructura de datos en caso de que desee agregar varias filas a la vez, es decir

 df = df.append(pd.DataFrame([new_row],index=['e'],columns=df.columns)) 

O para una sola fila (Gracias @Zero)

 df = df.append(pd.Series(new_row, index=df.columns), name='e') #EDIT: there was a missing ')' 

Salida:

   valores de número de variable
 un banco de NaN Verdadero
 b 3.0 tienda Falso
 c 0.5 mercado verdadero
 Gobierno de NaN verdad
 e 1.0 hotel verdadero

Si es la primera fila necesitas:

 df = Dataframe(columns=[number, variable, values]) df.loc['e', [number, variable, values]] = [1.0, 'hotel', 'true']