Как l oop через список списков, чтобы создать сумму появления запроса - PullRequest
0 голосов
/ 26 января 2020

Я пытаюсь создать определенную функцию с помощью файла матрицы csv (также преобразуемого в список списков для каждой строки), с помощью которого следует анализировать запрос. например:

... На изображении рецепты будут проверены на наличие ключевых слов "яблоко", "тендер" и "ди sh" с известными показателями внешнего вида.

список, который я создал, выглядит следующим образом:

[['', 'applepie', 'applecake', 'biscuit', 'bread']
['apple', 3.0, 4.0, 0.0, 0.0]
['tender', 2.0, 2.0, 0.0, 1.0]
['dish', 2.0, 4.0, 0.0, 0.0]]

Для запроса: query: ['apple', 'dish'] следует проверить, появляются ли они для ди sh или нет. Если так, это должно быть добавлено к сумме сортов. Сумма для applep ie будет равна 5,0. Для яблочного пирога это было бы 8.0 Для хлеба это было бы 0.0, et c. Я хотел бы, чтобы эти результаты также были в отдельном списке.

Как мне go о построении этого l oop? Мне трудно понять, как выбрать нужные c столбцы.

Для python 3, заранее спасибо!

ожидаемый результат: [ ['applep ie', 'applecake', 'biscuit', 'bread'] [5.0, 8.0, 0.0, 0.0]]

1 Ответ

0 голосов
/ 26 января 2020

Так что на самом деле намного проще, если вы храните свои данные в DataFrame. Затем мы можем использовать встроенный метод .loc в DataFrame.

import pandas as pd

df = pd.DataFrame({'applepie': [3, 2, 2], 'applecake': [4, 2, 4], 
                   'biscuit': [0, 0, 0], 'bread': [0, 1, 0]})

df.index = ['apple', 'tender', 'dish']

query = ['apple', 'dish']

results = df.loc[query].sum().to_dict()

print(results)
{'applepie': 5, 'applecake': 8, 'biscuit': 0, 'bread': 0}

Я думаю, что формат словаря имеет больше смысла, потому что он связывает значения друг с другом, или вы может даже сохранить его в объекте Series и не преобразовать его в словарь. Если вы намереваетесь иметь списки списков, вы просто запустите следующее для переменной results.

[[*results.keys()], [*results.values()]]
[['applepie', 'applecake', 'biscuit', 'bread'], [5, 8, 0, 0]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...