##任务:
PS:激光雷达数据是十分钟记录一次,一小时就有6个文件。
因此,在(二)的基础上增加任务——每6个文件进行一次提取,分别输出至一个文件,并以原文件名命名,循环读取输出。
PS:df.append() 是将所有数据按顺序添加到一列,如果列名不同,则在另一列的下一行添加。
import pandas as pd
import os
import glob
dir=r'E:\test\vertical\test'
list_tif=glob.glob(r'E:\test\vertical\test\*')
out_path='E://test//vertical//'
for root, dirs, files in os.walk(dir):
for i in range(0,len(files),6):
filename = files[i]
print(filename)
for i in range(0,len(list_tif),6):
df1=pd.read_csv(list_tif[i],skiprows=6,header=None,sep=';',names=['a','b','c','d','e'])
df2=pd.read_csv(list_tif[i+1],skiprows=6,header=None,sep=';',names=['a','b','c','d','e'])
df3=pd.read_csv(list_tif[i+2],skiprows=6,header=None,sep=';',names=['a','b','c','d','e'])
df4=pd.read_csv(list_tif[i+3],skiprows=6,header=None,sep=';',names=['a','b','c','d','e'])
df5=pd.read_csv(list_tif[i+4],skiprows=6,header=None,sep=';',names=['a','b','c','d','e'])
df6=pd.read_csv(list_tif[i+5],skiprows=6,header=None,sep=';',names=['a','b','c','d','e'])
df_empty=pd.DataFrame()
for filename in [df1,df2,df3,df4,df5,df6]:
df_empty=df_empty.append(filename,ignore_index=True)
df_out=df_empty.a
df_out.to_csv(out_path + files[i] + '.csv',header=False,index=False)
del df1
del df2
del df3
del df4
del df5
del df6
因为要把各时次的数据进行计算,需要把各时次的同类数据分列存放,故重新编了以下程序。
PS:还是初学者,所以程序可能还不简便。
#导入用到的库
import numpy as np
import pandas as pd
import os
import glob
#dir输入路径设置
dir=r'E:\test\vertical\test'
#生成文件夹下的列表
list_tif=glob.glob(r'E:\test\vertical\test\*')
#设置输出路径
out_path='E://test//vertical//'
#设置6个数据为1个循环,因为十分钟观测一次,变量filename是为了输出文件命名。
for root, dirs, files in os.walk(dir):
for i in range(0,len(files),6):
filename = files[i]
#设置6个数据为1个循环,定义df1-6的变量,提取激光雷达的第一列,并分别设置列名为abcdef
for i in range(0,len(list_tif),6):
df1=pd.read_csv(list_tif[i],skiprows=6,header=None,sep=';',usecols=[0],names=['a'])
df2=pd.read_csv(list_tif[i+1],skiprows=6,header=None,sep=';',usecols=[0],names=['b'])
df3=pd.read_csv(list_tif[i+2],skiprows=6,header=None,sep=';',usecols=[0],names=['c'])
df4=pd.read_csv(list_tif[i+3],skiprows=6,header=None,sep=';',usecols=[0],names=['d'])
df5=pd.read_csv(list_tif[i+4],skiprows=6,header=None,sep=';',usecols=[0],names=['e'])
df6=pd.read_csv(list_tif[i+5],skiprows=6,header=None,sep=';',usecols=[0],names=['f'])
#新建一个4000行6列的数值全为0的数组,之前想用各列和df1-6分别相加,所以数值设为0,但尝试了输出的值为NaN,原因暂不清楚,故代码写成了替换。
data = np.zeros((4000,6))
df = pd.DataFrame(data,columns = ['a','b','c','d','e','f'],)
df['a']=df1['a']
df['b']=df2['b']
df['c']=df3['c']
df['d']=df4['d']
df['e']=df5['e']
df['f']=df6['f']
#输出到csv文件,设置输出路径+文件名+后缀
df.to_csv(out_path + files[i] + '.csv',header=False,index=False)
#清空变量
del df1
del df2
del df3
del df4
del df5
del df6