Как я могу сопоставить значение списка с одной строкой файла cvs? - PullRequest
0 голосов
/ 03 августа 2020

Мне нужно сравнить список значений целых чисел с одной строкой в ​​файле CVS, чтобы найти, какая строка соответствует этим значениям.

'' '

firstScore = 90  
secondScore = 80  
thirdScore = 75  

list = [firstScore, secondScore, thirdScore]

' ' '

и данные csv:

    Name,first,second,third
    Paul,40,60,30
    Kevin,90,80,75
    Jenny,80,75,90

Фактический вывод должен быть именем, которое соответствует 3 значениям: Kevin.

Ответы [ 3 ]

0 голосов
/ 03 августа 2020

Я не понимаю, откуда поступают ваши данные, но этот код должен охватывать ключевые logi c:

import io

data = '''
[Name, first, second, third]
[Paul, 40, 60, 30]
[Kevin, 90, 80, 75]
[Jenny, 80, 75, 90]
'''

lstFind = [str(x) for x in [90, 80, 75]] # convert to string fields

lstAll = []

f = io.StringIO(data)  # load string data as file text
for row in f: 
  if not row.strip(): continue # skip empty rows
  rowlst = row.strip().replace(" ","")[1:-1].split(",") # convert row to list
  lstAll.append(rowlst) # add to main list

for lst in lstAll:  # each list 
   if lst[1:] == lstFind:
      print(lst[0])    # Kevin

  
0 голосов
/ 05 августа 2020

Спасибо Handler ({ ссылка }), который решил его, пока этот вопрос был закрыт. '' 'импорт csv

list = [firstScore, secondScore, thirdScore]

with open('test.csv', 'rt') as f:
reader = csv.reader(f, delimiter=',')

# skip the header of your csv
next(reader)

for row in reader:
  if((list[0] == int(row[1])) and (list[1] == int(row[2])) and (list[2] == int(row[3]))):
    # print name (present in first column -> index 0 of the row) 
    print(row[0])
    break
  else:
    print("No match found..")

' ''

0 голосов
/ 03 августа 2020

Поскольку вашего кода нет, я предположил, что вы используете пакет pandas с read_csv для создания фрейма данных (df) с данными, приведенными выше. Если это так, вы можете использовать следующее для извлечения данных из вашего df:

 df.loc[(df['first'] == list[0]) & (df['second'] == list[1]) & (df['third'] == list[2])].iloc[:,0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...