Извлечение значений из массива numy с условием для строк - PullRequest
0 голосов
/ 16 октября 2018

Итак, это мой первый пост, и английский не является моим родным языком, я постараюсь быть максимально понятным.

У меня есть пустой массив из формы (в основном таблица данных) содержащий следующее:

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

где:

  • informationx представляет собой string,
  • identifier представляет собой string, содержащий одинили несколько идентификаторов в одном string,
  • length - это float.

Мне нужно извлечь из этого массива все строки, содержащие информацию об одном идентификаторе.

В SQL я бы сделал

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

Легко, когда есть только один идентификатор:

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

Есть ли какой-нибудь элегантный и питонский способ сделать это (возможно, черезизвлечь, выбрать или где)?

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Это простая задача для панд, учитывая, что вы можете использовать панд, преобразовать свой массив в фрейм данных панд, используя
import pandas as pd df = pd.dataFrame([your_array]) #creating data_frame df.columns = ['col_1','col_2','col_3'] #setting column names

, учитывая, что вы установили имена col_1, col_2, col_3 для вашегоcolumns.

Подберите столбцы, которые вы хотите с этим кодом.

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

Учитывая, что вы не можете использовать панд, только используя 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 голосов
/ 16 октября 2018

Вы можете сделать цикл для просмотра каждого индекса, чтобы увидеть, является ли идентификатор тем, который вам нужен:

 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...