我有两个CSV文件,第一个有3列和许多行,第二个有4列和许多行,我试图根据RemoveDes列表(在代码中)“ RemovedDes”从第一个文件中检索数据是文件2的过滤后的版本,已过滤掉文件2的“目标”列中第一个字母为“ E”的数据行。并非将使用文件1中的所有数据,仅使用与RemoveDes相对应的数据因此,为什么我需要比较两者。
如何仅打印文件1中的相关数据?
我知道这可能很容易,但是我对此并不陌生,非常感谢您的帮助,欢呼。
(为进一步说明,我在文件1中的Eastings和Northings之后,但需要使用“ 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)
答案 0 :(得分:0)
基于评论中的澄清,我建议采用以下方法:
pandas.DataFrame
作为您选择的数据结构以下代码将创建一个pandas
数据帧data
,其中包含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文件都带有标题行。
如果您需要一行一行地打印结果(如您的代码段所示),则类似
for i in range(data.shape[0]):
print(data.iloc[i,:])
会做