gpt4 book ai didi

Python合并两个CSV文件

转载 作者:行者123 更新时间:2023-12-01 05:56:42 25 4
gpt4 key购买 nike

我有两个 CSV 文件。一:

s555555,7
s333333,10
s666666,9
s111111,10
s999999,9

还有两个:

s111111,,,,,
s222222,,,,,
s333333,,,,,
s444444,,,,,
s555555,,,,,
s666666,,,,,
s777777,,,,,

我想最终得到:

[['s111111', '10', '', '', '', ''],
['s222222', '', '', '', '', ''],
['s333333', '10', '', '', '', ''],
['s444444', '', '', '', '', ''],
['s555555', '7', '', '', '', ''],
['s666666', '9', '', '', '', ''],
['s777777', '', '', '', '', '']]

这是我的代码:

new_marks = get_marks_from_file('assign1_marks.csv')
marks = get_marks_from_file('marks.csv')

def merge_marks(all_marks, new_marks, column):
for n in range(len(new_marks)):
for a in range(len(all_marks)):
if all_marks[a][0]==new_marks[n][0]:
all_marks[a][column]= new_marks[n][column]

return marks

我做错了什么?我不断得到:

>>> merge_marks(marks, new_marks, 1)

[['s111111', '', '', '', '', ''],
['s222222', '', '', '', '', ''],
['s333333', '', '', '', '', ''],
['s444444', '', '', '', '', ''],
['s555555', '7', '', '', '', ''],
['s666666', '', '', '', '', ''],
['s777777', '', '', '', '', '']]

最佳答案

线路

                return marks

必须取消三级缩进,才能使其脱离 for 循环和 if 语句。现在,它会返回找到的第一个 all_marks[a][0]==new_marks[n][0] 匹配项,并且不会替换其他匹配项。

您还希望返回 all_marks 而不是 marks:在这种情况下,全局变量 marks 恰好是相同的,并且也是改变了,但如果你用一个字面上命名为其他任何名称的变量来调用它,它就会失败。

解决办法是:

def merge_marks(all_marks, new_marks, column):
for n in range(len(new_marks)):
for a in range(len(all_marks)):
if all_marks[a][0]==new_marks[n][0]:
all_marks[a][column]= new_marks[n][column]

return all_marks

关于Python合并两个CSV文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12186956/

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