import pandas as pd
import numpy as np
data = {'Name':['Tom', 'Tom', 'Jack', 'Terry'], 'Age':[20, 21, 19, 18]}
df = pd.DataFrame(data)
Digamos que tengo un marco de datos que se ve así. Estoy tratando de descubrir cómo verificar la columna Nombre para el valor 'Tom' y si lo encuentro la primera vez que lo reemplazo con el valor 'FirstTom' y la segunda vez que aparece lo reemplazo con el valor 'SecondTom' . ¿Cómo se logra esto? He usado el método de reemplazo antes, pero solo para reemplazar todos los Toms con un solo valor. No quiero agregar un 1 al final del valor, pero cambiar completamente la cadena a otra cosa.
Editar:
Si el df se parecía más a esto a continuación, ¿cómo verificaríamos a Tom en la primera columna y la segunda columna y luego reemplazaríamos la primera instancia con FirstTom y la segunda instancia con SecondTom?
data = {'Name':['Tom', 'Jerry', 'Jack', 'Terry'], 'OtherName':[Tom, John, Bob,Steve]}
I don't want to add a 1 on the end of the value
EDITAR: Para el recuento duplicado por filas, use:
Use
GroupBy.cumcount
conSeries.map
, pero solo para valores duplicados porSeries.duplicated
:El diccionario dinámico debería ser como:
fuente
transform
fuente