Как использовать результаты вычислений CSV в качестве поисковых терминов в Python / Pandas? - PullRequest
0 голосов
/ 12 июня 2019

Во-первых, в моей реальной ситуации я использую гораздо большие наборы данных, но здесь для этого минимального, воспроизводимого примера (представ) давайте предположим:

У меня есть два файла .csv. Они выглядят так: Файл 1 называется «ObjectList.csv»

"Object","ProductName","ID"
"Radio","ICF-306",1112
"TV","Q60R",1113
"Computer","EliteBook745",1114
"Keyboard","LX410",1115
"Camera","D7500",1116
"USB-Stick","CruzerBlade",1117
"HDMI-Cable","AmazonBasic",1118
"Console","XBOXOne",1119
"Controller","XBOXOne",1120
"Antivirus","AntiVirusPlus",1121
"Game","HaloWars2",1122

Файл 2 называется "PropertyList.csv

"ID","Manufacturer","Category","Price","Release"
1112,"SONY","Electronics",50,"1.3.2015"
1113,"SAMSUNG","Electronics",800,"1.7.2016"
1114,"HP","Electronics",1500,"1.3.2018"
1115,"FUJITSU","Electronics","80","1.2.2016"
1116,"NIKON","Electronics","250","1.8.2017"
1117,"SANDISK","Accessories","20","1.6.2007"
1118,"AMAZON","Cables",15,"1.8.2015"
1119,"MICROSOFT","Entertainment",450,"22.11.2013"
1120,"MICROSOFT","Entertainment",50,"22.11.2013"
1121,"NORTON","Programme",100,"1.8.2016"
1122,"MicrosoftStudios","Programme",70,"21.2.2017"

Как видите, два CSV-файла имеют один столбец с перекрывающейся информацией - столбец «ID». Что я хотел бы сделать, это 1. поиск определенного свойства в файле 2 (например, самый дорогой продукт) 2. вернуть «ID» в качестве результата поиска 3. использовать вычисленный «идентификатор» в качестве поискового термина для файла 1, чтобы 4. в качестве конечного результата получите данные об объекте очистки.

До сих пор я мог делать это вручную, то есть у меня есть скрипт Python / Pandas, который извлекает идентификаторы, а затем мне нужно вручную просмотреть результат и жестко запрограммировать результат в сценарии:

import pandas as pd

ObjectList="/media/jk/DE88159688156E71/Statistik/StackOverflow/ObjectList.csv"
PropertyList="/media/jk/DE88159688156E71/Statistik/StackOverflow/PropertyList.csv"

OL = pd.read_csv(ObjectList)
PL = pd.read_csv(PropertyList)

SN = PL[PL['Price']==PL['Price'].max()]['ID']
print(SN)

print(OL[OL.ID == 1114])

Этот скрипт работает и дает такой результат:

jk@debian:~$ python3 "/media/jk/DE88159688156E71/Statistik/StackOverflow/DataManipulation.py" 
2    1114
Name: ID, dtype: int64
     Object   ProductName    ID
2  Computer  EliteBook745  1114

Необходимость ручного поиска результатов вычислений вредна по очевидным причинам. Поэтому мой вопрос: Как использовать результат поиска из одного файла .csv в качестве критерия поиска для второго файла .csv?

Я пробовал это:

print(OL[OL['ID'] == SN])

Но это просто дает мне ошибку.

Последнее замечание: в моем реальном сценарии я НЕ могу сделать слияние двух файлов, потому что они слишком велики для такой операции.

1 Ответ

0 голосов
/ 12 июня 2019

Вы можете получить доступ к значениям ряда, например: SN.values
В вашем примере:

import pandas as pd

OL = pd.read_csv('ol.csv')
PL = pd.read_csv('pl.csv')

SN = PL[PL['Price']==PL['Price'].max()]['ID']

print(OL[OL.ID == SN.values[0]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...