使用python从不同的文件创建csv

使用python从不同的文件创建csv,python,python-2.7,csv,Python,Python 2.7,Csv,我有两个通过python生成的csv文件。记录位于a.csv和b.csv以下。b、 csv有2行,第二行中的值可以重复。我想要一个类似final.csv的结果。我该怎么做 我尝试了下面的代码,但这是不对的。我没有做正确的比较。任何帮助都会很好 a、 csv b、 csv 我想用这两个文件创建一个文件,如下所示 final.csv "all","1","1Gi","4","8Gi","ABC" "als","0","0","100m","128Mi","ABC" "awx","6","9Gi","

我有两个通过python生成的csv文件。记录位于a.csv和b.csv以下。b、 csv有2行,第二行中的值可以重复。我想要一个类似final.csv的结果。我该怎么做

我尝试了下面的代码,但这是不对的。我没有做正确的比较。任何帮助都会很好

a、 csv

b、 csv

我想用这两个文件创建一个文件,如下所示

final.csv

"all","1","1Gi","4","8Gi","ABC"
"als","0","0","100m","128Mi","ABC"
"awx","6","9Gi","20","32Gi","DPL"
"cho-1","9","9728Mi","15","20Gi","ABC"
"cho-2","12250m","15395Mi","20","24Gi","ABC"
我的代码:

csv1 = csv.reader(open("reports/a.csv", "r"))
csv2 = csv.reader(open("reports/b.csv", "r"))
s=[]

while True:
    try:
        line1 = csv1.next()
        line2 = csv2.next()

        if (line1[0] == line2[0]):
            s.append([line1[1], line2[0], line2[1], line2[2], line2[3], line2[4]])
        else:
            s.append(["NA", line2[0], line2[1], line2[2], line2[3], line2[4]])
    except StopIteration:
        break

从您的预期输出来看,我认为您应该使用set。由于line1和line2变量包含逗号分隔的值,因此可以从这些值中创建列表。像

line1 = ["all","1","1Gi","4","8Gi"]
line2 = ["all","ABC"]
然后,您可以将这两个列表合并为一个列表,并从中创建一个集合。所以布景看起来像

set1 = set(line1.extend(line2))
制作一个集合将删除重复项。
希望这有帮助。

在这个场景中,我得到了熊猫的帮助

df0 = pd.read_csv("a.csv")
df1 = pd.read_csv("b.csv")
df1=df1.dropna(axis=1)
df1 = df1.merge(df0, on='Name', how='outer')
df1.to_csv("final.csv", index=True)

您离解决方案不远,只需将数据从第2行附加到第1行并使用它:

...
csvout = csv.writer(open("final.csv", "wb"), quoting = csv.QUOTE_ALL)
while True:
    try:
        line1 = csv1.next()
        line2 = csv2.next()
        if line1[0] != line2[0]:    # control same first field
            raise Exception("Desynch", line1[0], '#', line2[0])
        line1.append(line2[1])      # append field from b.csv
        csvout.writerow(line1)      # and write it to final.csv
    except StopIteration:
        break
df0 = pd.read_csv("a.csv")
df1 = pd.read_csv("b.csv")
df1=df1.dropna(axis=1)
df1 = df1.merge(df0, on='Name', how='outer')
df1.to_csv("final.csv", index=True)
...
csvout = csv.writer(open("final.csv", "wb"), quoting = csv.QUOTE_ALL)
while True:
    try:
        line1 = csv1.next()
        line2 = csv2.next()
        if line1[0] != line2[0]:    # control same first field
            raise Exception("Desynch", line1[0], '#', line2[0])
        line1.append(line2[1])      # append field from b.csv
        csvout.writerow(line1)      # and write it to final.csv
    except StopIteration:
        break