У меня есть два CSV файла, первый из которых содержит 3 столбца и несколько строк, а второй - 4 столбца и несколько строк. Я пытаюсь получить данные из 1-го файла на основе списка RemoveDes (в коде), "RemovedDes" является фильтрованным версию файла 2, которая отфильтровывала строки данных, где первая буква "E" в столбце "Место назначения" файла 2. Не все данные из файла 1 будут использоваться, а только данные, соответствующие данным RemoveDes, поэтому почему я нужно сравнить эти два.
Как распечатать только данные из файла 1?
Я знаю, что это, вероятно, очень легко сделать, но я новичок в этом, любая помощь очень ценится, приветствует.
(для дальнейшего уточнения, я после Eastings и Northings в файле 1, но вам нужно использовать "RemovedDes" (который отфильтровывал ненужную информацию в File2), чтобы соответствовать данным в двух файлах)
File 1 Sample Data (many more rows):
Destination Easting Northing
D4 . 102019 . 1018347
D2 . 102385 . 2048908
File 2 Sample Data (many more rows):
Legend Destination Distance Width
10 D4 . 67 . 87
18 E2 . 32 . 44
Обратите внимание, что E2 отфильтровывается, когда он начинается с E.. См. Код ниже для пояснения.
Legend Destination Distance Width
1stFile = open(file2.csv, 'r')
FILE1 = 1stFile.readlines()
print(FILE1)
list_dictionary = []
2ndFile = open(file2.csv, 'r')
FILE2 = 2ndFile.readlines()
print(FILE2)
for line in FILE2:
values = line.split(',')
Legend = values[0]
Destination = values[1]
Distance = values[2]
Width = values[3]
diction_list['LEG'] = Legend
diction_list['DEST'] = Destination
diction_list['DIST'] = Distance
diction_list['WID'] = Width
list_dictionary.append(the_dictionary)
RemovedDes = []
for line_dict in list_dictionary:
if not li_dict['DEST'].startswith('E'): #Filters out rows of data which starts with the letter E in File 2.
RemovedDes.append(li_dict)
print(RemovedDes)
Основываясь на пояснениях в комментариях, я предлагаю следующий подход:
pandas.DataFrame
качестве вашей структуры данных по выбору Следующий код создаст данные фрейма data
pandas
со всеми записями file2
, расширенными их соответствующими записями в столбцах Easting
и Northing
file1
import pandas as pd
file1 = pd.read_csv('file1.csv')
file2 = pd.read_csv('file2.csv')
data = pd.merge(file2, file1, how = 'left', on = 'Destination')
Примечание: это предполагает, что Destination
имеет уникальные значения по всей доске и что оба.csv-Files имеют строку заголовка.
Если вам нужно распечатать результат по строкам (как это делается в фрагменте кода), строка кода, например
for i in range(data.shape[0]):
print(data.iloc[i,:])
Сделаю
file1
, вы можете добавить строку data1 = data[['Destination', 'Easting', 'Northing']]
в мой фрагмент кода выше, чтобы создать фрейм данных только с строками из file2
и столбцы из file1
(хотя есть более эффективные способы достижения этого результата, поэтому, если это то, что вам нужно, дайте мне знать, и я напишу подробный подход).