gpt4 book ai didi

python - 比较两个 CSV 文件中的数据

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:26 25 4
gpt4 key购买 nike

我有两个 CSV 文件,其中包含数据库中的所有产品,目前正在使用 Excel 公式比较这些文件,这是一个漫长的过程。 (每个文件约 130,000 行)

我用 Python 编写了一个脚本,它可以很好地处理小样本数据,但在现实世界中并不实用

CSV 布局是:

ID、产品标题、成本、价格 1、价格 2、价格 3、状态

import csv

data_old = []
data_new = []

with open(file_path_old) as f1:
data = csv.reader(f1, delimiter=",")
next(data)
for row in data:
data_old.append(row)
f1.close()

with open(file_path_new) as f2:
data = csv.reader(f2, delimiter=",")
for row in data:
data_new.append(row)
f2.close()

for d1 in data_new:
for d2 in data_old:
if d2[0] == d1[0]:
# If match check rest of data in the same row
if d2[1] != d1[1]:
...
if d2[2] != d1[2]:
...

上面的问题是因为它是一个嵌套的 for 循环,它遍历第二个数据的每一行 130,000 次(慢是轻描淡写)

我想要实现的是获取所有产品的列表,这些产品的名称、成本、3 种价格和状态中的任何一种都发生了变化,还有一个 bool 标志来显示哪些数据发生了变化来自前几周的数据。

所需的输出 CSV 格式:

ID,旧标题,新标题,已更改,旧成本,新成本,已更改....

123,ABC,ABC,假,12 英镑,13 英镑,真....

解决方案:

import pandas as pd
# Read CSVs
old = pd.read_csv(old_file, sep=",")
new = pd.read_csv(new_file, sep=",")

# Join data together in single data table
df_join = pd.concat([old.set_index('PARTNO'), new.set_index('PARTNO'], axis='columns', key=['Old', 'New'])

# Displays data side by side
df_swap = pd.swaplevel(axis='columns')[old.columns[1:]]

# Output to CSV
out = df_swap.to_csv(output_file)

最佳答案

只需使用 pandas

import pandas as pd
old = pd.read_csv(file_path_old, sep=',')
new = pd.read_csv(file_path_new, sep=',')

然后你可以做任何事情(只需阅读文档)。例如,要比较标题:

old['Title'] == new['Title'] 为文件中的每一行提供一个 bool 值数组。

关于python - 比较两个 CSV 文件中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56603639/

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