Encuentre la primera y última columna que no sea cero en cada fila de un marco de datos de pandas

Cindy

Tengo DataFrame a la vista Namey Datecon valores de peso en las celdas:

Name        Jan17  Jun18  Dec18    Apr19  count 
Nick         0      1.7     3.7      0     2
Jack         0       0      2.8     3.5    2       
Fox          0      1.7      0       0     1
Rex          1.0     0      3.0     4.2    3
Snack        0       0      2.8     4.4    2
Yosee        0       0       0      4.3    1 
Petty        0.5    1.3     2.8     3.5    4 

Starty Finishdebe agregarse al dataFrame en referencia a la siguiente definición:

  1. Startprimer valor distinto de cero en la fila comenzó desde la Jan17columna hastaApr19
  2. Finishprimer valor distinto de cero en secuencia Apr19hastaJan17

Además, si la fila tiene solamente un valor distinto de cero en la fila a continuación, Starty Finishson lo mismo.

Para encontrar el primer elemento distinto de cero en la fila, intenté data[col].keys, np.argmax()y funciona como se esperaba.

date_col_list = ['Jan17','Jun18','Dec18', 'Apr19']

data['Start']=data[date_col_list].keys([np.argmax(data[date_col_list].values!=0, axis=1)]

El resultado es:

Name        Jan17  Jun18  Dec18    Apr19  count   Start 
Nick         0      1.7     3.7      0     2      Jun18        
Jack         0       0      2.8     3.5    2      Dec18           
Fox          0      1.7      0       0     1      Jun18    
Rex          1.0     0      3.0     4.2    3      Jan18    
Snack        0       0      2.8     4.4    2      Dec18    
Yosee        0       0       0      4.3    1      Apr19     
Petty        0.5    1.3     2.8     3.5    4      Jan17

Para detectar valores para la Finishcolumna intenté usar: np.apply_along_axiscomo:def func_X(i): return np.argmax(np.where(i!=0))

np.apply_along_axis(func1d = func_X, axis=1, arr=data[date_col_list].values)

El resultado es un error: 'tuple' object has no attribute 'argmax'

El marco de datos esperado es:

Name        Jan17  Jun18  Dec18    Apr19  count   Start  Finish
Nick         0      1.7     3.7      0     2      Jun18   Dec18     
Jack         0       0      2.8     3.5    2      Dec18   Apr19        
Fox          0      1.7      0       0     1      Jun18   Jun18 
Rex          1.0     0      3.0     4.2    3      Jan18   Apr19 
Snack        0       0      2.8     4.4    2      Dec18   Apr19 
Yosee        0       0       0      4.3    1      Apr19   Apr19  
Petty        0.5    1.3     2.8     3.5    4      Jan17   Apr19  

¿Cómo puedo encontrar Finishen referencia al valor distinto de cero en dirección desde la última columna ( Apr19) a la primera ( Jan17)?

piRSquared:

first_valid_index y last_valid_index

d = df.mask(df == 0).drop(['Name', 'count'], 1)
df.assign(
    Start=d.apply(pd.Series.first_valid_index, 1),
    Finish=d.apply(pd.Series.last_valid_index, 1)
)

    Name  Jan17  Jun18  Dec18  Apr19  count  Start Finish
0   Nick    0.0    1.7    3.7    0.0      2  Jun18  Dec18
1   Jack    0.0    0.0    2.8    3.5      2  Dec18  Apr19
2    Fox    0.0    1.7    0.0    0.0      1  Jun18  Jun18
3    Rex    1.0    0.0    3.0    4.2      3  Jan17  Apr19
4  Snack    0.0    0.0    2.8    4.4      2  Dec18  Apr19
5  Yosee    0.0    0.0    0.0    4.3      1  Apr19  Apr19
6  Petty    0.5    1.3    2.8    3.5      4  Jan17  Apr19

stack entonces groupby

d = df.mask(df == 0).drop(['Name', 'count'], 1)
def fl(s): return s.xs(s.name).index[[0, -1]]
s, f = d.stack().groupby(level=0).apply(fl).str
df.assign(Start=s, Finish=f)

    Name  Jan17  Jun18  Dec18  Apr19  count  Start Finish
0   Nick    0.0    1.7    3.7    0.0      2  Jun18  Dec18
1   Jack    0.0    0.0    2.8    3.5      2  Dec18  Apr19
2    Fox    0.0    1.7    0.0    0.0      1  Jun18  Jun18
3    Rex    1.0    0.0    3.0    4.2      3  Jan17  Apr19
4  Snack    0.0    0.0    2.8    4.4      2  Dec18  Apr19
5  Yosee    0.0    0.0    0.0    4.3      1  Apr19  Apr19
6  Petty    0.5    1.3    2.8    3.5      4  Jan17  Apr19

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

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Extraer la primera y última fila de un marco de datos en pandas

el marco de datos de pandas compara la primera y la última fila de cada grupo

Pandas trama de datos reciben todas las filas entre cero (0) de la columna de la máscara y tienen la primera y última fila de cada grupo

Encuentre el nombre de la columna con un valor mayor que cero en cada fila

Lopping duplicar la primera y la última fila en el marco de datos de pandas

Agregar una lista a la primera fila y columna de un marco de datos de pandas

Agregar una lista a la primera fila y columna de un marco de datos de pandas

Indexar la primera y la última fila con NA en un marco de datos

Encuentre el valor más cercano a cero en cada columna de un marco de datos - R

Pandas, ¿cómo obtener la primera y la última fecha de todos los rangos de valores distintos de cero en un marco de datos?

Encuentre un valor que sea un subconjunto de una fila en el marco de datos de Pandas

Elimine la primera x cantidad de caracteres de cada fila en una columna de un marco de datos de Python

En R, divida un marco de datos para que los marcos de datos del subconjunto contengan la última fila del marco de datos anterior y la primera fila del marco de datos posterior

Encuentre valores únicos en un marco de datos de Pandas, independientemente de la ubicación de la fila o columna

¿Encontrar el índice de primera y la última fila de valores nan en un marco de datos de pandas si el número de nans consecutivos alcanza el umbral N para una columna determinada?

seleccionar la primera y la última fila dentro de un marco de datos?

Encuentra la última fila por cada columna de un marco de datos

Convierta la primera fila del marco de datos de pandas en el nombre de la columna

Pandas: lea Excel que no tiene encabezados de columna y los datos no comienzan en la primera fila

¿Cómo crear varios archivos de texto para cada columna en un marco de datos y mantener la primera columna?

Cómo guardar cada fila en csv en el marco de datos Y nombrar el archivo según la primera columna de cada fila

Repita solo la primera fila y la última fila con tiempos de longitud del marco de datos de pandas

Obtenga índices de columna para valores distintos de cero en cada fila en el marco de datos de pandas

El marco de datos multiindex de Pandas establece la primera fila de una columna en 0

Encuentre el primer, segundo y tercer máximo de cada fila y sus nombres de columna correspondientes en un marco de datos en r

Encuentre el índice de columna de un elemento para cada fila de un marco de datos

para cada fila, busque la última columna con valor 1 en el marco de datos binarios

Pandas: agregue una nueva columna con un solo valor en la última fila de un marco de datos

Mantenga la primera y la última fila de valores de columnas repetitivas de un marco de datos de panda

TOP Lista

  1. 1

    ¿Cómo ocultar la aplicación web de los robots de búsqueda? (ASP.NET)

  2. 2

    Kibana 4 , making pie chart , error message

  3. 3

    Manera correcta de agregar referencias al proyecto C # de modo que sean compatibles con el control de versiones

  4. 4

    récupérer les noms de clés depuis Firebase react-native

  5. 5

    OAuth 2.0 utilizando Spring Security + WSO2 Identity Server

  6. 6

    Cómo eliminar o caducar las cookies en Chrome usando asp.net

  7. 7

    desbordamiento: oculto no funciona al hacer zoom en un iframe de YouTube usando transformar

  8. 8

    Cómo extraer una palabra clave (cadena) de una columna en pandas dataframe en python

  9. 9

    Link library in Visual Studio, why two different ways?

  10. 10

    선언되지 않은 유형 'MessagingDelegate'사용

  11. 11

    actualizar el contenido de la vista de reciclaje falla en la hoja inferior

  12. 12

    Ver todos los comentarios en un video de YouTube

  13. 13

    Problema con la vista de impresión de PDF

  14. 14

    ¿Cómo pintar el Dropline de un RowHeader-JTable en el Main-JTable durante un DragAndDrop?

  15. 15

    Pregunta de fórmula de desplazamiento y transposición de Excel / Google Sheets

  16. 16

    ¿Cómo puedo hacer accesible la información de color en tablas HTML?

  17. 17

    ¿Cómo generalizar el JSON en el procedimiento almacenado?

  18. 18

    Recortar fotos rectangulares de escaneos en OpenCV con Python

  19. 19

    2D 배열에 대한 Numpy 요소 별 평균 계산

  20. 20

    Typescript의 "window"전역 개체에 "adsbygoogle"애드 센스 속성을 추가하는 방법은 무엇입니까?

  21. 21

    Error: la ejecución falló para la tarea ': app: compileDebugJavaWithJavac'. java.io.FileNotFoundException:

CalienteEtiquetas

Archivo