使用Python从CSV中读取一列,并根据该列中的信息写入另一个CSV?

2024-04-19 04:36:58 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个CSV(https://uploadfiles.io/o5xm3),带有头(survived、pclass、name等)。我正在尝试使用python读取幸存列(0=died,1=yes),如果此人没有幸存,它会将此人的其他信息(来自其他列)写入另一个csv文件。到目前为止,我掌握的情况如下:

import csv
with open('titanic-new.csv',newline='') as csvfile:
    spamreader = csv.DictReader(csvfile, delimiter=",")
    sortedlist = sorted(spamreader, key=lambda row:(row['name']), reverse=False)

in_file = open('titanic-new.csv', 'r')
out_file = open('Q2_out.txt', 'w')
dict = {}

in_file.close()
out_file.close()

第一部分是我试图把名字按字母顺序排列,但我得到一个错误:(keyerror'name')如果有人能帮我也谢谢

编辑: 我下载了同事的文件,它看起来像这样(前3行):

survived,pclass,name,sex,age,ticket,fare,cabin
0,3,"Braund, Mr. Owen Harris",male,22,A/5 21171,7.25,
1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,PC 17599,71.2833,C85

Tags: 文件csvcsvfilenameinnewcloseopen
1条回答
网友
1楼 · 发布于 2024-04-19 04:36:58

您正在尝试筛选现有CSV,使其仅包含非幸存者。可按以下步骤进行:

import csv

with open('titanic-new.csv',newline='') as f_input, open('Q2_out.txt', 'w', newline='') as f_output:
    csv_input = csv.reader(f_input)
    csv_output = csv.writer(f_output)

    # Copy over the header (without the first column)
    csv_output.writerow(next(csv_input)[1:])

    for row in csv_input:
        if row[0] == '0':
            csv_output.writerow(row[1:])

在这种情况下,第一列即row[0]将是0。如果是这种情况,请将行写入输出CSV。你知道吗

这将为您提供一个CSV输出,开始如下:

pclass,name,sex,age,ticket,fare,cabin
3,"Braund, Mr. Owen Harris",male,22,A/5 21171,7.25,
3,"Allen, Mr. William Henry",male,35,373450,8.05,
3,"Moran, Mr. James",male,,330877,8.4583,
1,"McCarthy, Mr. Timothy J",male,54,17463,51.8625,E46

[1:]告诉它在写入时忽略第一列。你知道吗

也可以使用DictWriter,但对于这种情况,简单的csv.readercsv.writer也就足够了。你知道吗

相关问题 更多 >