如何在Python中基于列值从csv中选择行并写入另一个csv

j2qf4p5b  于 2023-03-10  发布在  Python
关注(0)|答案(1)|浏览(119)

我有一个csv文件(称为“infile“),看起来像下面。如果第一列的值是“学生”,第二列的值是“好”,我会把该行的第三和第四列写入一个新的文件称为“outfile”,并添加标题为“点”and "排名”。
我知道如何在Pandas中做到这一点,**但如何在python中使用csv模块做到这一点?**我尝试过reader(从infile中读取行),writer,for循环(和if语句),writerrow(),但都不起作用。谢谢你的帮助。
| 角色|地位|刻痕|结果|
| - ------|- ------|- ------|- ------|
| 学生|良好|九十|通过|
| 五线谱|不适用|不适用|不适用|
| 学生|良好|九十八|通过|
| 学生|穷人|五十|失败|

kzipqqlq

kzipqqlq1#

总的想法就是你所概述的:读取每一行并决定是否写入输出文件

import csv

def keep_row(row):
    return row['role'] == 'student' and row['status'] == 'good'
    
if __name__ == '__main__':
    data = []
    INFILE = 'infile.csv'
    OUTFILE = 'outfile.csv'
    
    with open(INFILE, 'r') as f:    
        reader = csv.DictReader(f)
        for row in reader:
            if keep_row(row):
                data.append({ 'points': row['score'], 'rank': row['result'] })
    
    with open(OUTFILE, 'w', newline='') as f:    
        writer = csv.DictWriter(f, fieldnames=data[0].keys())
        writer.writeheader()
        for row in data:
            writer.writerow(row)

如果您希望参考文档:https://docs.python.org/3/library/csv.html

相关问题