Hay 2 marcos de datos

Df1 y df2

df1 =

A   B
111 222
222 5555

df2 =

C   counter_2
333 100
777 25

Necesito agregar una columna "contador" a df1, debería ser simplemente como índice, devolver la posición de los elementos de la columna.

Así:

df1['counter'] = range(len(df1))

A   B   counter
111 222       1
222 555       2

Pero necesito cambiar el punto de partida, debería ser el número máximo de la columna "contador" de df2.

df2['counter_2'].max() # 100

Entonces mi salida deseada es como:

A   B   counter
111 222       101
222 555       102

Busqué en Google, pero no puedo encontrar una solución.

0
Anna Dmitrieva 1 oct. 2019 a las 11:20

3 respuestas

La mejor respuesta
# First, compute the starting point
start_point = df2['counter_2'].max() + 1

# Now, assign a range of numbers to the 'counter' column of df1
df1['counter'] = list(range(start_point, start_point + len(df1)))
1
Marijn van Vliet 1 oct. 2019 a las 08:27
import numpy as np
df1['counter'] = np.arange(df2['counter_2'].max(), len(df1) + 1)
1
Kelvin 1 oct. 2019 a las 08:27

Cuando creamos el marco de datos, tiene un índice predeterminado que no se muestra arriba. Si ha configurado otra columna como índice, entonces debería restablecerlo y luego agregar una nueva columna que contenga la suma de max de counter2 e índice de la siguiente manera:

 max_value = df2['counter_2'].max()     
 df1 = df1.reset_index()
 df1['counter'] = df1.index+max_value
 print(df1.head())

También use nombres significativos para columnas y marcos de datos. Gracias.

1
Atlas Bravoos 1 oct. 2019 a las 08:40
58180721