Estoy eligiendo los valores en Pandas DataFrame.
Me gustaría elegir los valores en las columnas 'One_T', 'Two_T', 'Three_T' (que significa los recuentos totales), en función de las proporciones de las columnas ('One_R', 'Two_R', 'Three_R').
La comparación de valores se realiza mediante las columnas ('One_R', 'Two_R', 'Three_R') y la elección de valores se realizará mediante columnas ('One_T', 'Two_T', 'Three_T').
Me gustaría encontrar los valores más altos entre las columnas ('One_R', 'Two_R', 'Three_R') y poner los valores de las columnas 'One_T', 'Two_T', 'Three_T' en la nueva columna 'Highest'.
Por ejemplo, la primera fila tiene los valores más altos en One_R que Two_R y Three_R. Luego, los valores en One_T se completarán en la columna denominada Más alto.
El marco de datos inicial se prueba por debajo del código y el resultado deseado es el resultado en el siguiente código.
test = pd.DataFrame([[150,30,140,20,120,19],[170,31,130,30,180,22],[230,45,100,50,140,40],
[140,28,80,10,60,10],[100,25,80,27,50,23]], index=['2019-01-01','2019-02-01','2019-03-01','2019-04-01','2019-05-01'],
columns=['One_T','One_R','Two_T','Two_R','Three_T','Three_R'])
One_T One_R Two_T Two_R Three_T Three_R
2019-01-01 150 30 140 20 120 19
2019-02-01 170 31 130 30 180 22
2019-03-01 230 45 100 50 140 40
2019-04-01 140 28 80 10 60 10
2019-05-01 100 25 80 27 50 23
result = pd.DataFrame([[150,30,140,20,120,19,150],[170,31,130,30,180,22,170],[230,45,100,50,140,40,100],
[140,28,80,10,60,10,140],[100,25,80,27,50,23,80]], index=['2019-01-01','2019-02-01','2019-03-01','2019-04-01','2019-05-01'],
columns=['One_T','One_R','Two_T','Two_R','Three_T','Three_R','Highest'])
One_T One_R Two_T Two_R Three_T Three_R Highest
2019-01-01 150 30 140 20 120 19 150
2019-02-01 170 31 130 30 180 22 170
2019-03-01 230 45 100 50 140 40 100
2019-04-01 140 28 80 10 60 10 140
2019-05-01 100 25 80 27 50 23 80
¿Hay alguna forma de hacer esto?
Gracias por el tiempo y las consideraciones.
Puede resolver esto usando df.filter
para seleccionar columnas con el _R
sufijo, luego idxmax
. A continuación, reemplace _R
con el _T
uso df.lookup
:
s = test.filter(like='_R').idxmax(1).str.replace('_R','_T')
test['Highest'] = test.lookup(s.index,s)
print(test)
One_T One_R Two_T Two_R Three_T Three_R Highest
2019-01-01 150 30 140 20 120 19 150
2019-02-01 170 31 130 30 180 22 170
2019-03-01 230 45 100 50 140 40 100
2019-04-01 140 28 80 10 60 10 140
2019-05-01 100 25 80 27 50 23 80
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras