精华内容
下载资源
问答
  • python遍历csv其中一列
    千次阅读
    2019-10-17 22:07:04

    套用【Python编程快速上手—让繁琐工作自动化】一书中捋清思路的方法,从思路到代码行为、从抽象(想法)到具体(方法)、递进列出代码需要实现的内容。

     总的来说,该程序必须做到以下几点:

    • 找出当前工作目录中的所有 CSV 文件
    • 读取每个文件的全部内容
    • 修改第一行,将内容写入一个新的 CSV 文件

    在代码层面上,这意味着该程序需要做到以下几点:

    • 循环遍历从 os.listdir()得到的文件列表,跳过非 CSV 文件
    • 创建一个 CSV Reader 对象,读取并修改该文件的内容
    • 创建一个 CSV Writer 对象,将修改好的数据写入新文件 
    #coding=UTF-8
    import os
    import csv
     
    root = r'D:\03code\python\csv_data'#需要处理csv文件的根目录
    root_root, root_dir_name = os.path.split(root)
     
    #优先遍历父目录、不遍历目录下的快捷方式
    #os.walk()中topdown=True从父到子,topdown=False代表从子到父遍历
    #root相对根目录、及其下属dirs文件夹、本层files文件(不含子文件夹文件)
    file_walk = os.walk(root, topdown=True, onerror=None, followlinks=False)
     
    #新建好处理后成果——root的镜像文件夹rootnew,注意topdown=True
    ls = []
    for root, dirs, files in file_walk:
        new_csv_root = root.replace(root_dir_name,root_dir_name+'_modified') 
        ## print(new_csv_root)           
        os.mkdir(new_csv_root)
     
        for file in files:
            file_path = os.path.join(root,file)
            print(file_path)
            if '.csv' in file_path:#将所有csv文件存入ls
                ls.append(file_path) 
    
    num = 0 
    #遍历根目录下所有excel文件
    for csv_path in ls:
        num += 1
        new_csv_path = csv_path.replace(root_dir_name,root_dir_name+'_modified')
        new_csv_root,csv_name = os.path.split(new_csv_path)#将文件名和根目录分开
         
        #01【准备新csv内容:新表头+源数据行】    
        #读取源csv文件数据行部分,存入列表partHeader
        inputcsvFile = open(csv_path)
        inputcsvReader = csv.reader(inputcsvFile)#len(csvReader)不存在
        inputcsvReader.line_num
        inputcsvData = list(inputcsvReader)
        partHeader = inputcsvData[0][1:]
    
        #获取源csv文件除表头外的行数,将行数值存入列表rowNum
        rowNum = []
        rowNum.append(len(inputcsvData)-1)#数据行数
        
        #拼接新csv文件表头
        Header = rowNum + partHeader#注意列表相加
    
        #准备写入新csv文件的内容(列表)
        csvRows = []
        csvRows.append(Header)
        for row in inputcsvData[1:]:#inputcsvReader
            csvRows.append(row)
           
        #02【将以上准备好的新csv内容写入】
        #新建空csv
        outputcsvFile = open(new_csv_path, 'w', newline='')#创建对象
        outputcsvWriter = csv.writer(outputcsvFile)
        #将组织好的csvRows内容逐行写入
        for row in csvRows:
            outputcsvWriter.writerow(row)
        outputcsvFile.close()
     
    print('共{}csv文件修改成!'.format(num))
    print('请在excel根目录的上级文件中寻找同名_modified文件夹!')

     

    更多相关内容
  • so I've seen this done is other questions asked here but I'm still a little ... I've been learning python3 for the last few days and figured I'd start working on a project to really get my hands...

    so I've seen this done is other questions asked here but I'm still a little confused. I've been learning python3 for the last few days and figured I'd start working on a project to really get my hands dirty. I need to loop through a certain amount of CSV files and make edits to those files. I'm having trouble with going to a specific column and also for loops in python in general. I'm used to the convention (int i = 0; i < expression; i++), but in python it's a little different. Here's my code so far and I'll explain where my issue is.

    import os

    import csv

    pathName = os.getcwd()

    numFiles = []

    fileNames = os.listdir(pathName)

    for fileNames in fileNames:

    if fileNames.endswith(".csv"):

    numFiles.append(fileNames)

    for i in numFiles:

    file = open(os.path.join(pathName, i), "rU")

    reader = csv.reader(file, delimiter=',')

    for column in reader:

    print(column[4])

    My issue falls on this line:

    for column in reader:

    print(column[4])

    So in the Docs it says column is the variable and reader is what I'm looping through. But when I write 4 I get this error:

    IndexError: list index out of range

    What does this mean? If I write 0 instead of 4 it prints out all of the values in column 0 cell 0 of each CSV file. I basically need it to go through the first row of each CSV file and find a specific value and then go through that entire column. Thanks in advance!

    解决方案

    It could be that you don't have 5 columns in your .csv file.

    Python is base0 which means it starts counting at 0 so the first column would be column[0], the second would be column[1].

    Also you may want to change your

    for column in reader:

    to

    for row in reader:

    because reader iterates through the rows, not the columns to my understanding.

    This code loops through each row and then each column in that row allowing you to view the contents of each cell.

    for i in numFiles:

    file = open(os.path.join(pathName, i), "rU")

    reader = csv.reader(file, delimiter=',')

    for row in reader:

    for column in row:

    print(column)

    if column=="SPECIFIC VALUE":

    #do stuff

    展开全文
  • 把三个csv文件中的feature值整合到个文件中,同时添加相应的label。# -*-coding:utf-8 -*-import csv;label1 = '1'label2 = '2'label3 = '3'a = "feature1,feature2,feature3,feature4,feature5,feature6,feature7...

    把三个csv文件中的feature值整合到一个文件中,同时添加相应的label。

    # -*-coding:utf-8 -*-

    import csv;

    label1 = '1'

    label2 = '2'

    label3 = '3'

    a = "feature1,feature2,feature3,feature4,feature5,feature6,feature7,feature8,feature9,feature10,label" + "\n"

    with open("./dataset/dataTime2.csv", 'a') as rfile:

    rfile.writelines(a)

    with open("./dataset/f02.csv", 'rb') as file:

    a = file.readline().strip()

    while a:

    a = a + ',' + label1 + "\n"

    #a = label1 + ',' + a + "\n"

    with open("./dataset/dataTime2.csv", 'a') as rfile:

    rfile.writelines(a)

    a = file.readline().strip()

    with open("./dataset/g03.csv", 'rb') as file:

    a = file.readline().strip()

    while a:

    a = a + ',' + label2 + "\n"

    #a = label2 + ',' + a + "\n"

    with open("./dataset/dataTime2.csv", 'a') as rfile:

    rfile.writelines(a)

    a = file.readline().strip()

    with open("./dataset/normal05.csv", 'rb') as file:

    a = file.readline().strip()

    while a:

    a = a + ',' + label3 + "\n"

    #a = label3 + ',' + a + "\n"

    with open("./dataset/dataTime2.csv", 'a') as rfile:

    rfile.writelines(a)

    a = file.readline().strip()

    获取csv文件中某一列,下面可以获得label为表头的列中对应的所有数值。

    filename = "./dataset/dataTime2.csv"

    list1 = []

    with open(filename, 'r') as file:

    reader = csv.DictReader(file)

    column = [row['label'] for row in reader]

    获取csv文件中某些列,下面可以获得除label表头的对应列之外所有数值。

    import pandas as pd

    odata = pd.read_csv(filename)

    y = odata['label']

    x = odata.drop(['label'], axis=1) #除去label列之外的所有feature值

    也可以处理成list[np.array]形式的数据。

    filename = "./dataset/dataTime2.csv"

    list1 = []

    with open(filename, 'r') as file:

    a = file.readline()

    while a:

    c = np.array(a.strip("\n").split(","))

    list1.append(c)

    也可以处理成tensor格式数据集

    # -*-coding:utf-8 -*-

    import tensorflow as tf

    # 读取的时候需要跳过第一行

    filename = tf.train.string_input_producer(["./dataset/dataTime.csv"])

    reader = tf.TextLineReader(skip_header_lines=1)

    key, value = reader.read(filename)

    record_defaults = [[1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], tf.constant([], dtype=tf.int32)]

    col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11= tf.decode_csv(

    value, record_defaults=record_defaults)

    features = tf.stack([col1, col2, col3, col4, col5, col6, col7, col8, col9, col10])

    with tf.Session() as sess:

    # Start populating the filename queue.

    coord = tf.train.Coordinator()

    threads = tf.train.start_queue_runners(coord=coord)

    trainx = []

    trainy = []

    for i in range(81000):

    # Retrieve a single instance:

    example, label = sess.run([features, col11])

    trainx.append(example)

    trainy.append(label)

    coord.request_stop()

    coord.join(threads)

    #最后长度是81000,trainx是10个特征

    展开全文
  • Python读取并遍历CSV数据

    千次阅读 2021-03-30 20:49:38
    直接通过Python自带的包读取CSV文件,读进来都是字符串格式,不好处理,所以安装pandas处理 # 读取csv文件,pandas会将CSV数据的第行作为表头 data = pd.read_csv("test.csv") 本文以遥感影像数据为例,每行...

    数据读取

    • 直接通过Python自带的包读取CSV文件,读进来都是字符串格式,不好处理,所以安装pandas处理
    # 读取csv文件,pandas会将CSV数据的第一行作为表头
    data = pd.read_csv("test.csv")
    
    • 本文以遥感影像数据为例,每一行表示一个像元的所对应的不同的参数或属性的值
      在这里插入图片描述

    数据处理

    1.由于从CSV文件中读取的数据大多需要进行处理,所以转换为列表形式比较方便

    # 遍历所有数据并存储到数组中
    a = data.values.tolist()
    

    2.统计该数据一共有多少行(像元数目)使用len函数

    # 计算像元个数
    num = len(a)
    

    3.对列表中的数据进行统一处理(求绝对值)需要调用map函数

    # map函数用于映射整个list进行操作,python3.0的map函数需要嵌套在list函数中
     b = list(map(abs, a[i]))
    

    4.对遍历的数据进行处理后,需要重新存入数组中,需要用到append函数

    # append函数用于将每次循环的数据添加到新建的空数组中
    c.append(b)
    

    数据输出

    #name用于命名输出的CSV文件的表头
    name = ['dominant']
    test = pd.DataFrame(columns=name, data=judge)
    test. to_csv("test2.csv")
    

    应用案例程序

    ➡️ 遥感影像阈值分区

    展开全文
  • 下面小编就为大家分享篇使用python获取csv文本的某行或某数据的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Pycharm平台下利用python语言实现文件夹中所有CSV文件中指定的单词出现的次数,结果另存为txt文本
  • with open('outfile.csv', 'r', encoding='gbk') as csvfile: reader = csv.reader(csvfile) j = 0 for i, rows in enumerate(reader): if i == j: row = rows ...
  • 本文中采用os库对文件进行批量导入, 采用csv库进行操作,主要是csv.read()和csv.write() 本文解决了在新的csv文件中有空格的问题 本文处理的是文本文档,采用‘wt’,‘rt’,不能使用‘wb’和‘rb’的二进制...
  • pythoncsv文件新增

    万次阅读 多人点赞 2021-02-19 17:28:19
    pythoncsv文件新增列给已有的数据表增加一列新的数据 给已有的数据表增加一列新的数据 打算增加一列以名字长度为数据的列 增加前: 增加后: 完整代码: import pandas as pd #pandas是一个强大的分析结构化...
  • pandas获取csv指定行,列 house_info = pd.read_csv('house_info.csv') 1:取行的操作: house_info.loc[3:6]类似于python的切片操作 2:取列操作: house_info['price'] 这是读取csv...5:对某一列除以他的最大值,
  • python读取csv文件的

    千次阅读 2021-01-30 03:22:57
    我使用pythonCSV模块遍历列的行。我需要做的是:获取“title”的第行移除任何西班牙文字符(重音,Ñ)删除单引号最后,用破折号替换空格,并将所有内容转换为小写。我得到这个工作与个简单的测试文件,而不是...
  • python csv 删除

    千次阅读 2020-11-29 12:14:22
    我的input.csv看起来是这样的: day,month,year,lat,long01,04,2001,45.00,120.0002,04,2003,44.00,118.00 我试图删除“year”栏及其所有条目。 总共有40多个条目,从1960年到2010年不等...我有以下标...
  • python – 查找csv文件中的

    千次阅读 2020-11-30 10:42:43
    在迭代器运行之前,是否有个简单的方法来检查数,而不“消耗”行?以下代码是我可以管理的最优雅的,但是我宁愿在for循环开始之前运行检查:import csvf = 'testfile.csv'd = '\t'reader = csv.reader(f,...
  • import csvwith open('in.csv')as f:head = next(f)# decide delimiter by what is in headerdelim = "," if "," == head[0] else " "# need to filter empty stringshead = filter(None, head.rstrip().split(del.....
  • 我有个有趣的问题:file1.csv有几百行,如:Code,DTime1,2010-12-26 17:012,2010-12-26 17:072,2010-12-26 17:15file2.csv大约有1100万行,如:id,D,Sym,DateTime,Bid,Ask1375022797,D,USD,2010-12-26 17:00:15,1....
  • python 获取csv数_Python 笔记

    千次阅读 2020-11-21 08:14:55
    1. 将python列表中的string转为数字, 利用map实现原文件中的数字格式f = open('filename', 'r') inf = list(map(float, f.... DataFrame读取csv避免第行作为表头,header=Nonef = pd.read_csv('filename.c...
  • 汉字乱码输出的解决方法是pd.read_csv函数要多携带个参数encoding='gbk',指明编码方式。 import pandas as pd import os import jieba.analyse pinglun = " " # 全部评论内容组合 __all__ = [] for ...
  • 在记事本中打开初始csv文件时,它看起来像这样:“ AAA,15.0”“ BBB,45.0”“ CCC,60.0”然后,我想处理此数据,添加另一列以获取如下格式的内容:“ AAA,15.0,50.0”“ BBB,45.0,30.0”“ CCC,60.0,20.0”...
  • 《本文首发于公众号:深度学习与pythonPython的卓越灵活性和易用性使其成为最受欢迎的编程语言之,尤其是对于数据处理和机器学习方面来说,其强大的数据处理库和算法库使得python成为入门数据科学的首选语言。...
  • 原标题:numpy和pandas实战:文件夹CSV文件中的第一列数据前几天有个小伙伴问了一个问题,关于Python读取文件夹下多个CSV文件中的第一列数据并求其最大值和最小值,大家讨论的还是相当激烈的啊,这里总结两个方法,...
  • python读取csv文件(行的读取)

    万次阅读 多人点赞 2021-03-01 15:28:01
    返回结果是一个_csv.reader的对象,我们可以对这个对象进行遍历,输出每一行,某一行,或某一列。代码如下: 1 import csv 2 with open('data.csv', 'r') as f: 3 reader = csv.reader(f) 4 print(type(reader))
  • csv文件(Excel电子表格)中有三:命名位置值fal6s hlkshf8 alksj0saljg h9ag80a ha8g9alak5f agk1h00 ha035a以此类推(数千个数据点长)名称和位置中有重复项。在我想知道有多少地方与个名字相关。在例如,对于...
  • python.csv 按行按读取

    千次阅读 2020-12-01 13:51:26
    #header=0,表示文件第0行为索引#index_col=0,表示文件第0列为行索引userTable=pd.read_csv('./data/preprefe_%s.csv'%str(i),header=0,index_col=0)常用参数的读取csv文件import pandas as pdobj=pd.read_csv('f:/...
  • pythonCSV 文件中删除表头

    千次阅读 2021-04-27 10:29:58
    也许你会将它们送入个自动化的过程,只需要数据,不需要每顶部的表头。可以在 Excel 中打开每个文件,删除第行,并重新保存该文件,但这需要几个小时。让我们写个程序来做这件事。该程序需要打开当前工作...
  • python 保存csv,多

    2022-05-15 00:24:38
    需求:将多个csv文件读取出来,将数据合并到csv文件, 1、遍历文件夹,将scv文件存入到列表list1 2、遍历列表list1读取csv文件,将读到的数据存入到二维列表list2 3、开始处理二维列表: 3.1、因为二维列表里的...
  • 如下所示:# -*- coding: utf-8 -*-import osimport pandas as pdimport numpy as np#from os import sysdef appendStr(strs):return "BOQ" + strsdef addBOQ(dirs, csv_file):data = pd.read_csv(os.path.join(dirs...
  • python读取csv
  • 遍历csv文件统计各数目并输出单个文件】
  • #读取csv文件数据,并去除其中的nan行 def getSubjID(subjBehavFile='D:/HCP documents/HCP1200_behavior.csv'): # 使用pandas读入 behavData = pd.read_csv(subjBehavFile) #读取文件中所有数据 # 按分离...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,128
精华内容 3,651
热门标签
关键字:

python遍历csv其中一列