栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python提取多个CSV表的指定列合成一个多列CSV表

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python提取多个CSV表的指定列合成一个多列CSV表

Python提取多个CSV表的指定列合成一个多列CSV表

最近,需要根据ENVI中ROI导出的csv表格,计算植被指数的相关性,共上百个表,需要把每个表的固定列数据整合到一个表上计算相关性。手动操作真的太累了,于是就想试试Python代码。

效果展示



可以看到,代码将四个表中前面的元数据和表头都忽略,只提取了最后一列的数据,并根据用表格名称中的VI(植被指数)来作为表头,防止分不清每一列数字所代表的含义。

import pandas as pd
import numpy as np
import os
def get_file(path):  # 创建一个空列表
    files = os.listdir(path)
    list1 = []
    listVI=[]
    for file in files:
        if not os.path.isdir(path + file):  # 判断该文件是否是一个文件夹
            f_name = str(file)
            VI_name=f_name[8:-4]   #读取文件名称中的VI名称
            #print(f_name)
            tr = '/'  # 多增加一个斜杠
            filename = path + tr + f_name
            #filename =  f_name
            list1.append(filename)#得到所有
            listVI.append(VI_name)
    return (list1,listVI)
    #返回一个文件名列表;一个VI名称列表,用于为新创建表格的列命名

File=get_file('**/python_try')[0]   #输入表格路径,这俩一样
VI=get_file('**/python_try')[1]
#print(File,VI)  

dframe={} #创建字典,把每个表格数据的最后一列提取出来,存储到字典中

for x in range(32):
    varfile=File[x]
    VI_name=VI[x]
    df = pd.read_csv(varfile,header=8,names=[VI_name],usecols=[6])
    #第9行默认为表头,并更改为VI的名字。读取每个csv的最后一列
    data1 = df[VI_name] # 把表格转换成数组的格式
    data_list=data1.values.tolist() #把数组转换成列表
    dframe[VI_name]=data_list #在字典中添入新的元素(每个表最后一列)
##    print(data1)
##    print(dframe)
    
    VIcol=pd.Dataframe(dframe) 
    VIcol.to_csv('**/output.csv') #输出表格路径。注意要先新建一个这样的.csv,并且不能和输入的csv表放在同一个文件夹下。
    

可能对你有用的链接
在写代码的过程中,我先找了一个大致符合我需求的代码作为模板如何用PYTHON批量提取各个.CSV文件中某范围的数值并进行合并,试着用自己的一点点语法知识去理解它,然后把其中与自己要求不一致的代码进行模仿和修改。
下面是一些我在修改代码觉得对初学者很有用,相对系统的教程链接。
Pandas CSV 文件
详解pandas的read_csv方法 这个对于csv的读取可以说是非常详细了,帮了我大忙。
python 如何提取多个excel表中的某行/列数据做合并 针对excel的,没试过,可以参考一下
写在最后的话
这个代码可能只是针对我特殊的需求写的,因此对输入表的格式和输出格式都是按照我的需求来的。但是部分代码可以供大家参考。
最后纪念一下,这是我第一次完整独立地用代码实现自己想要的功能,之前都是直接复制别人的代码,如果不能直接拿来用我就会很头疼,不想要努力去理解和修改了,觉得很复杂。对Python的学习,我还是计算机二级的水平,半年没看早语法就忘得一干二净。但我想,当初学不就是为了处理数据更快、更便捷吗?如果总是不想做出改变,安于旧方法和旧技能,就永远不会进步。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/331024.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号