python读写csv文件

    xiaoxiao2023-10-27  177

    读取csv文件

    一般用pandas库读取csv比较方便,比如原始的csv长这样,第一行的id,truelabels和prelabels是列名。 代码为:

    import pandas as pd file = pd.read_csv(filename) print(file['id']) # 输出所有id信息(第一列全部输出) # 遍历第一列: for i in range(len(file['id'])): print(file['id'][i])

    为csv文件添加一列

    还是以上面的csv为例,如果我想为每一个id加上一个shape属性,需要这样改:

    shape = [] for i in range(len(file['id'])): file_name = file['id'][i] #获取第一列 id名 img = cv2.imread(file_name + '.jpg') shape.append('{}*{}'.format(img.shape[1], img.shape[0])) # 宽和高 result_df = pd.DataFrame({'id': file['id'], 'turelabels': file['turelabels'], 'prelabels': file['prelabels'], 'shape': shape}) result_df.to_csv('output.csv', index=False) # index=False的意思是说,以自定义的id作为索引,而不是0,1,2这样的自然数做索引。

    将字典保存成csv文件

    有两种方法,上面的to_csv函数就可以:

    import pandas as pd d = {1:1, 2:2, 3:3, 4:5, 7:10} #随便拿个字典的例子 df = pd.DataFrame({'key': list(d.keys()), 'value': list(d.values())}) df.to_csv('output.csv', index=False)

    也可以用写入文件的方式:

    with open('output.csv', 'w') as f: [f.write('{0},{1}\n'.format(key, value)) for key, value in d.items()]

     


    2019.6.23更新:

    CSV的多行写入和循环追加

    def writ_in_csv(): global lats global lons global soil_m#三个全局变量用于存放经纬度,土壤数值 count = 0 with open(r"hecdata_pm.csv", 'a',newline='') as f:#a表示在文末追加,newline用于去除间隔的空行 writer = csv.writer(f) writer.writerow(["经度E", "纬度N", "土壤"]) # 先写入列名 for ilon in lons:#取出每一个经度值 for i in range(406):#写入每一个经度值对应的纬度、土壤 if (ilon==-9999.0) or (lats[i]== -9999.0) or (soil_m[count][i] == -9999.0): #去除无用值,如果经纬度、土壤有一个是空(-9999.0),则摒弃该值 continue else: writer.writerows([[ilon, lats[i], soil_m[count][i]]])# 写入多行用writerows,一次在一行写入三个数值 count += 1
    最新回复(0)