Así que esta es mi primera publicación aquí y el inglés no es mi lengua materna, intentaré ser lo más claro posible.

Tengo una matriz numpy proveniente de una forma (básicamente una tabla de datos) que contiene lo siguiente:

[('information1',   'identifier1',              length1)
('information2',    'identifier2',              length2)
('information3',    'identifier3,identifier4',  length3)
....
]

Dónde :

  • informationx es una string,
  • identifier es un string que contiene uno o varios identificadores en uno string,
  • length es una float.

Necesito extraer de esta matriz todas las filas que contienen información sobre un identificador.

En SQL haría

select * from array where id like "%identifier1%"

Es fácil cuando solo hay un identificador:

extract = array[array[id_header] == identifier1]

¿Hay alguna forma elegante y pitónica de hacerlo (tal vez a través de extracto, selección o dónde)?

0
Seb 16 oct. 2018 a las 16:45

2 respuestas

La mejor respuesta

Esta es una tarea fácil en pandas, considerando que puede usar pandas, traducir su matriz a un marco de datos de pandas, usando
importar pandas como pd df = pd.dataFrame ([your_array]) #creating data_frame df.columns = ['col_1', 'col_2', 'col_3'] # establecer nombres de columna

Considerando que había establecido los nombres col_1, col_2, col_3 en sus columnas.

Subselecciona las columnas que quieras con este código.

df_subset = df[ df['col_2'].str.contains('identifierx') ] #subselecting the data frame.

Teniendo en cuenta que no puedes usar pandas, solo usa numpy.

new_lis = []
for idx in range(0,len(your_array)):
    if( 'identifierx' in your_array[idx][1]):
        new_lis.append(your_array[idx])
0
WagnerAlbJr 16 oct. 2018 a las 14:35

Podría hacer un ciclo para recorrer cada índice para ver si el identificador es el que desea:

 lengths = []
 for i in range(array.size[0]): #this should iterate through each row in the table 
      if array[i][1] == "identifierx":
           lengths.append(array[i][2]) #adds the lenghts to a list containing all the lengths from the identifier you want
0
Jacob Sharp 16 oct. 2018 a las 14:08