记录一下在处理数据中用到的方法,欢迎指正,如果对你有帮助那就再好不过啦!
某路径下有很多文件夹,这些文件夹内有名字格式类似的待处理文件:
例如RHU文件夹下的文件如下图,仅日期存在变化:
现在想用for循环分别读它们的路径,拿其中一个文件路径举例:
D:\BaiduNetdiskDownload\2010-2019全国地面气候日值数据\中国地面气候资料日值数据集(V3.0)-201001201912\2015-2019weather\RHU\SURF_CLI_CHN_MUL_DAY-RHU-13003-201501.TXT
其它文件仅有标红部分是和其它文件不一样的,所以我创建了一个字典来读取。
重点是我既想用 f 来进行遍历,又想取一个绝对路径,否则这个循环就不能正确读取文件路径了,所以尝试之后发现 rf 是可以合在一起用的!!!同时满足这两个要求。
如果文件非常多,也可以用os内的功能读取文件名进行遍历,因为我要有对应的输出文件所以采取了这一方式。
import pandas as pd
import os
import xlsxwriter
meteor_key = {'PRS':'SURF_CLI_CHN_MUL_DAY-PRS-10004-', 'TEM':'SURF_CLI_CHN_MUL_DAY-TEM-12001-',
'RHU':'SURF_CLI_CHN_MUL_DAY-RHU-13003-', 'PRE':'SURF_CLI_CHN_MUL_DAY-PRE-13011-',
'EVP':'SURF_CLI_CHN_MUL_DAY-EVP-13240-', 'WIN':'SURF_CLI_CHN_MUL_DAY-WIN-11002-',
'SSD':'SURF_CLI_CHN_MUL_DAY-SSD-14032-'}
for key,value in meteor_key.items():
path = f'D://BaiduNetdiskDownload//2010-2019全国地面气候日值数据//中国地面气候资料日值数据集(V3.0)-201001201912//2015-2019weather//{key}//'
workbook = xlsxwriter.Workbook(rf'D:\BaiduNetdiskDownload\2010-2019全国地面气候日值数据\中国地面气候资料日值数据集(V3.0)-201001201912\2015-2019weather\{key}_2015-2019_stations.xlsx') # 新建excel表
for year in range(2015, 2020):
worksheet = workbook.add_worksheet('%04.0f' % year)
for month in range(1, 13):
fn = value + '%04.0f' % year + '%02.0f' % month + '.TXT'
if (os.path.exists(path + fn)): # 判断一下是否存在该路径,成功的话即可进行下一步文件读取处理!
data = pd.read_csv(path + fn, header=None, sep='\s+')
stations = list(set(data.iloc[:, 0])) # 将气象站的站号取出,并去除重复值
headings = [str('%02.0f' % month) + '月']
worksheet.write_row(0,month-1, headings)
worksheet.write_column(1,month-1, stations)
else:
print('路径有错误或不存在!')
workbook.close()
print('end')