我最近开始在一个项目中使用python,因此我为我的经验不足提前道歉。 我正在处理两个不同的csv文件,但它们都在一个公共字段中。csv文件包含关于一系列书籍的信息,大小不同。文件一有“描述”字段,文件二没有。统一文件的字段是“isbn”。我的目标是创建一个。包含具有相同isbn代码的书籍说明的csv文件。我的代码是:
import csv
import pandas as pd
dataset_description = '../dataset-books/dataset.csv'
books_mod = '../dataset-books/booksmod.csv'
output_file = '../dataset-books/newdataset.csv'
cols_to_remove = [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 27]
cols_to_remove = sorted(cols_to_remove, reverse=True)
row_count = 0 # Current amount of rows processed
with open(dataset_description, "r", encoding='Latin1') as source,\
open(books_mod, 'r', encoding='Latin1') as source2:
reader = pd.read_csv(source, delimiter=',')
reader2 = pd.read_csv(source2, delimiter=',')
with open(output_file, "w", newline='', encoding='Latin1') as result:
writer = csv.writer(result)
for row, row2 in reader, reader2:
#row[19], row2[6] index column containing the code
if row[19] == row2[6] and row_count != 10001:
for col_index in cols_to_remove:
del row[col_index]
writer.writerow([row_count, row])
row_count += 1
else:
break
source.close()
source2.close()
result.close()
我读取csv文件,定义要删除的列的索引,打开文件进行读取,打开一个文件进行写入,并尝试仅选择具有相同代码的行,然后删除其他行。最后我把所有的东西都写在一个文件里。在执行时,它会给我带来一个错误:“ValueError:要解包的值太多(预期为2)”。 请帮帮我
使用pandas.merge()解决方案
确保“on”合并字段的数据类型相同。在本例中,ISBN已被读取为float64
相关问题 更多 >
编程相关推荐