提取处理数据
已知MON 文件夹中所有TXT文件有四列数据,每一列数据由空格隔开如1959 1 0 19.40
1959 2 0 207.70
1959 3 0 99.10
1959 4 0 164.60
运用Python
1.首先在,三省站点.xlsx 文件中,遍历所有的‘站号’。(在三省站点.xlsx的A列)
2.根据已得‘区站号’,在 MON 文件夹下遍历出所有符合条件的TXT文件(每个文件名中都包含站号,为后五位数字),
3.将第二步所得所有(.txt)文件转为 excel 文件,excel 文件后缀要求.xlsx(所有涉及到的 excel 文件都要求后缀.xlsx),并且插入表头,‘Year’ ‘Mon’ ‘Day’ ‘PRE’。
4.遍历所有已得 excel 文件的开始年份(站点开始可能年份不一致),将所有站点的开始年份,写入到新的 excel 文件中,并将其命名为 Starting year, 为了解答您的问题,我将提供一个Python代码示例来实现您的要求。在开始之前,需要确保您已经安装了所需的库,如pandas和openpyxl。您可以使用pip命令进行安装。
import os
import pandas as pd
# 步骤1:读取三省站点.xlsx文件中的站号
station_data = pd.read_excel('三省站点.xlsx')
station_ids = station_data['站号'].tolist()
# 步骤2:遍历MON文件夹,根据站号匹配TXT文件并转为Excel文件
for station_id in station_ids:
# 根据站号获取符合条件的TXT文件
txt_files = in file and file.endswith('.txt')]
for txt_file in txt_files:
# 读取TXT文件数据
with open(os.path.join('MON', txt_file), 'r') as f:
lines = f.readlines()
# 解析TXT文件数据并创建DataFrame
data =
df = pd.DataFrame(data, columns=['Year', 'Mon', 'Day', 'PRE'])
# 将数据保存为Excel文件
excel_file = txt_file.replace('.txt', '.xlsx')
df.to_excel(excel_file, index=False, header=['Year', 'Mon', 'Day', 'PRE'])
# 步骤4:遍历所有Excel文件的开始年份,并写入新的Excel文件
start_years = {}
for excel_file in os.listdir('.'):
if excel_file.endswith('.xlsx'):
df = pd.read_excel(excel_file)
start_year = str(df['Year'].min())[:4]
start_years = start_year
# 创建包含开始年份的DataFrame并保存为新的Excel文件
start_years_df = pd.DataFrame(list(start_years.items()), columns=['Excel文件', '开始年份'])
start_years_df.to_excel('Starting year.xlsx', index=False)
请确保以下事项:
1. 确保三省站点.xlsx文件位于当前工作目录下,且包含一个名为站号的列。
2. 确保MON文件夹位于当前工作目录下,并包含所有的TXT文件。
3. 执行上述代码后,将会生成多个Excel文件和一个名为Starting year.xlsx的新Excel文件。
此代码将按照您的要求遍历站号、匹配TXT文件、转换为Excel文件,然后提取每个Excel文件的开始年份,并将其写入到Starting year.xlsx中。
请注意,以上代码仅提供了实现的思路,并未经过详细测试,可能需要根据您具体的数据和需求进行适当的修改。希望对您有所帮助!如有任何问题,请随时追问。 首先,我们需要安装一些必要的Python库,如pandas、openpyxl和xlrd。在你的命令行中运行以下命令来安装它们:
pip install pandas openpyxl xlrd
然后,我们可以使用下面的Python代码来完成你的任务:
import pandas as pd
import os
import glob
# 读取三省站点.xlsx文件
df_station = pd.read_excel('三省站点.xlsx')
# 遍历所有的‘站号’
for station in df_station['站号']:
# 在MON文件夹下遍历出所有符合条件的TXT文件
for file in glob.glob(f'MON/*{station}.txt'):
# 读取TXT文件
df = pd.read_csv(file, sep=' ', names=['Year', 'Mon', 'Day', 'PRE'])
# 将TXT文件转为xlsx文件,并插入表头
df.to_excel(file.replace('.txt', '.xlsx'), index=False)
# 遍历所有已得xlsx文件的开始年份
starting_years = {}
for file in glob.glob('MON/*.xlsx'):
df = pd.read_excel(file)
starting_years = df['Year'].min()
# 将所有站点的开始年份,写入到新的xlsx文件中
df_starting_years = pd.DataFrame(list(starting_years.items()), columns=['站点', '开始年份'])
df_starting_years.to_excel('Starting year.xlsx', index=False)
首先,我们读取了"三省站点.xlsx"文件,并遍历了所有的'站号'。然后,我们在'MON'文件夹下遍历出所有符合条件的TXT文件,读取这些文件,并将它们转换为.xlsx文件,同时插入了表头。
然后,我们遍历了所有的.xlsx文件,找到了每个文件的开始年份,并将这些年份保存在了一个字典中。
最后,我们将这个字典转换为一个DataFrame,并将其保存为一个新的.xlsx文件,名为"Starting year.xlsx"。 你可以使用以下Python代码来实现你提到的任务:
import os
import pandas as pd
# 读取三省站点.xlsx文件
station_file = '三省站点.xlsx'
df_station = pd.read_excel(station_file)
# 遍历所有站号
for station in df_station['站号']:
# 根据区站号在MON文件夹下找到对应的TXT文件
txt_files = in file]
# 创建新的Excel文件,插入表头
excel_file = f'{station}_data.xlsx'
df_data = pd.DataFrame(columns=['Year', 'Mon', 'Day', 'PRE'])
# 遍历所有TXT文件并将数据添加到Excel文件中
for txt_file in txt_files:
data = []
with open(os.path.join('MON', txt_file), 'r') as f:
for line in f:
line = line.strip()
if line:
cols = line.split()
data.append(cols)
df_temp = pd.DataFrame(data, columns=['Year', 'Mon', 'Day', 'PRE'])
df_data = pd.concat()
# 将数据保存为Excel文件
df_data.to_excel(excel_file, index=False)
# 提取所有站点的开始年份
starting_years = df_station['开始可能年份']
# 创建新的Excel文件,写入开始年份,并命名为Starting year
starting_year_file = 'Starting year.xlsx'
df_starting_year = pd.DataFrame({'站号': df_station['站号'], '开始年份': starting_years})
df_starting_year.to_excel(starting_year_file, index=False)
请确保三省站点.xlsx文件和MON文件夹与上述代码在同一目录下,并且已经安装了pandas库。运行上述代码后,将会生成每个站点的数据Excel文件以及包含所有站点开始年份的Starting year.xlsx文件。
注:此回答由 GPT 生成,其他类似回答也是 GPT 生成,仅供参考。如果遇到非 GPT 回答请优先采纳。 isdkz 发表于 2023-7-19 10:52
首先,我们需要安装一些必要的Python库,如pandas、openpyxl和xlrd。在你的命令行中运行以下命令来安装它们 ...
运行结果为空表,是否是读取TXT文件出问题
歌者文明清理员 发表于 2023-7-19 11:03
你可以使用以下Python代码来实现你提到的任务:
请确保三省站点.xlsx文件和MON文件夹与上述代码在同一目 ...
txt_files = in file]
TypeError: 'float' object is not subscriptable 王book 发表于 2023-7-19 11:08
txt_files = in file]
TypeError: 'float' objec ...
你得看你的三省站点.xlsx有没有站号这个表头,如果没有就在代码中替换成你的 过来学习学习
页:
[1]