gpt4 book ai didi

python - 使用列表和字典比较两个 CSV 文件

转载 作者:太空宇宙 更新时间:2023-11-03 21:41:27 25 4
gpt4 key购买 nike

我有两个 CSV 文件,第一个有 3 列和许多行,第二个有 4 列和许多行,我试图根据 RemoveDes 列表(在代码中)“RemovedDes”从第一个文件检索数据是文件 2 的过滤版本,它过滤掉了文件 2 的 Destination 列中第一个字母为“E”的数据行。并非文件 1 中的所有数据都将被使用,仅使用与 RemoveDes 对应的数据因此我需要比较两者。

如何只打印文件1中的相关数据?

我知道这可能很容易做到,但我对此很陌生,非常感谢任何帮助,干杯。

(进一步说明;我正在查找文件 1 中的东距和北距,但需要使用“RemovedDes”(过滤掉文件 2 中不必要的信息)来匹配两个文件中的数据)

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)

最佳答案

根据评论中的澄清,我建议采用以下方法:

  1. 使用 pandas.DataFrame 作为您选择的数据结构
  2. 执行列表连接

以下代码将创建一个 pandas 数据框 data,其中包含 file2 的所有条目,并通过列 中各自的条目进行扩展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 文件都带有标题行。

关于python - 使用列表和字典比较两个 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52828766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com