tutorial recorrer manejo insertar filas fila español documentacion datos data columna agregar python pandas numpy dataframe insert

recorrer - pandas python tutorial español pdf



¿Insertar una fila en un marco de datos de pandas basado en el valor de la fila? (2)

Tengo un DataFrame:

df = pd.DataFrame({''B'':[2,1,2],''C'':[''a'',''b'',''a'']}) B C 0 2 ''a'' 1 1 ''b'' 2 2 ''a''

Quiero insertar una fila encima de cualquier aparición de ''b'', que es un duplicado de esa fila pero con ''b'' cambiado a ''c'', así que termino con esto:

B C 0 2 ''a'' 1 1 ''b'' 1 1 ''c'' 2 2 ''a''

Por mi vida, no puedo entender cómo hacer esto.


Aquí hay una forma de hacerlo:

duplicates = df[df[''C''] == ''b''].copy() duplicates[''C''] = ''c'' df.append(duplicates).sort_index()


Trabajando en el nivel NumPy, aquí hay un enfoque vectorizado:

arr = df.values idx = np.flatnonzero(df.C==''b'') newvals = arr[idx] newvals[:,df.columns.get_loc("C")] = ''c'' out = np.insert(arr,idx+1,newvals,axis=0) df_index = np.insert(np.arange(arr.shape[0]),idx+1,idx,axis=0) df_out = pd.DataFrame(out,index=df_index)

Ejecución de muestra -

In [149]: df Out[149]: B C 0 2 a 1 1 b 2 2 d 3 4 d 4 3 b 5 8 a 6 4 a 7 2 b In [150]: df_out Out[150]: 0 1 0 2 a 1 1 b 1 1 c 2 2 d 3 4 d 4 3 b 4 3 c 5 8 a 6 4 a 7 2 b 7 2 c