|
发表于 2023-5-9 20:00:27
|
显示全部楼层
以下是基于pandas库的Python代码,可以批量将txt文档转化为excel文件,并添加表头和条件替换。
import pandas as pd
import os
# 获取当前文件夹下所有txt文件
txt_files = [f for f in os.listdir('.') if f.endswith('.txt')]
for txt_file in txt_files:
# 读取txt文件
df = pd.read_csv(txt_file, sep='\t', header=None, names=['date', 'precipitation'])
# 将日期拆分为年、月、日
df[['year', 'month', 'day']] = df['date'].str.split('-', expand=True)
# 替换负值和-999为0
df.loc[(df['precipitation'] < 0) | (df['precipitation'] == -999), 'precipitation'] = 0
# 保留一位小数
df['precipitation'] = df['precipitation'].round(1)
# 生成excel文件,文件名只保留数字
excel_file_name = ''.join(filter(str.isdigit, txt_file)) + '.xlsx'
df.to_excel(excel_file_name, index=False, columns=['year', 'month', 'day', 'precipitation'])
解释:
1. os.listdir('.') 可以获取当前文件夹下的所有文件名, [f for f in os.listdir('.') if f.endswith('.txt')] 可以筛选出所有以 .txt 结尾的文件名。
2. pd.read_csv 可以读取txt文件, sep='\t' 表示使用制表符分隔, header=None 表示没有表头, names=['date', 'precipitation'] 表示自定义表头。
3. df['date'].str.split('-', expand=True) 可以将日期按照 - 进行拆分,并将拆分结果分别放到 year 、 month 、 day 三列中。
4. df.loc[(df['precipitation'] < 0) | (df['precipitation'] == -999), 'precipitation'] = 0 可以将 precipitation 列中小于0或等于-999的值替换为0。
5. df['precipitation'] = df['precipitation'].round(1) 可以将 precipitation 列中的值保留一位小数。
6. df.to_excel(excel_file_name, index=False, columns=['year', 'month', 'day', 'precipitation']) 可以将处理后的数据保存为excel文件, index=False 表示不保存行索引, columns=['year', 'month', 'day', 'precipitation'] 表示只保存这四列数据。 |
|