Во-первых, в моей реальной ситуации я использую гораздо большие наборы данных, но здесь для этого минимального, воспроизводимого примера (представ) давайте предположим:
У меня есть два файла .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])
Но это просто дает мне ошибку.
Последнее замечание: в моем реальном сценарии я НЕ могу сделать слияние двух файлов, потому что они слишком велики для такой операции.