|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
要求:
1.首先在,站点.xlsx 文件中,遍历福建省所有的‘站号’。
2.根据已得福建省的‘区站号’,在 MON 文件夹下遍历出所有福建省文件,
举例每个文件名中都包含区站号,为后五位数字。
3.将第二步所得福建省所有(.txt)文件转为 excel 文件,excel 文件后缀要求.xlsx
代码:
mport os
import pandas as pd
# 读取三省站点.xlsx文件
df_stations = pd.read_excel('站点.xlsx', usecols=['站号'])
# 获取福建省的所有区站号
fujian_stations = df_stations[df_stations['站号']]
# 遍历MON文件夹下的所有福建省文件
mon_folder = 'MON'
fujian_files = []
for filename in os.listdir(mon_folder):
if filename.endswith('.txt') and filename[-9:-4].isdigit() and int(filename[-9:-4]) in fujian_stations:
fujian_files.append(os.path.join(mon_folder, filename))
# 将福建省所有txt文件转为excel文件
output_folder = 'output'
os.makedirs(output_folder, exist_ok=True)
for file_path in fujian_files:
df = pd.read_csv(file_path, delimiter='\t') # 假设txt文件使用制表符分隔数据
output_path = os.path.join(output_folder, os.path.basename(file_path).replace('.txt', '.xlsx'))
df.to_excel(output_path, index=False)
错误:
line 3767, in __getitem__
indexer = self.columns._get_indexer_strict(key, "columns")[1]
line 5876, in _get_indexer_strict
self._raise_if_missing(keyarr, indexer, axis_name)
line 5935, in _raise_if_missing
raise KeyError(f"None of [{key}] are in the [{axis_name}]")
KeyError: "None of [Index([ nan, 58446.0, 58448.0, 58449.0, 58450.0, 58451.0, 58452.0, 58453.0,\n 58454.0, 58455.0,\n ...\n 59654.0, 59655.0, 59656.0, 59658.0, 59659.0, 59663.0, 59664.0, 59673.0,\n 59750.0, 59754.0],\n dtype='float64', length=226)] are in the [columns]"
求错误原因及修改后的代码
根据错误信息看,出现了 KeyError 错误,提示指定的列名在 DataFrame 的列中找不到。原因可能是读取的 df_stations DataFrame 中的 '站号' 列名不正确。
我注意到代码中的这一行可能存在问题: - fujian_stations = df_stations[df_stations['站号']]
复制代码
请检查一下 '站号' 是否是正确的列名。如果列名不正确,将其修改为正确的列名。此外,你还可以使用 .dropna() 方法过滤掉缺失值,代码如下所示: - fujian_stations = df_stations['站号'].dropna()
复制代码
另外,在遍历文件名时,可以使用 str.isdigit() 或者正则表达式来判断是否为数字后五位。修改后的代码如下:
- import os
- import pandas as pd
- # 读取三省站点.xlsx文件
- df_stations = pd.read_excel('站点.xlsx', usecols=['站号'])
- # 获取福建省的所有区站号
- fujian_stations = df_stations['站号'].dropna()
- # 遍历MON文件夹下的所有福建省文件
- mon_folder = 'MON'
- fujian_files = []
- for filename in os.listdir(mon_folder):
- if filename.endswith('.txt') and filename[-9:-4].isdigit() and int(filename[-9:-4]) in fujian_stations:
- fujian_files.append(os.path.join(mon_folder, filename))
- # 将福建省所有txt文件转为excel文件
- output_folder = 'output'
- os.makedirs(output_folder, exist_ok=True)
- for file_path in fujian_files:
- df = pd.read_csv(file_path, delimiter='\t') # 假设txt文件使用制表符分隔数据
- output_path = os.path.join(output_folder, os.path.basename(file_path).replace('.txt', '.xlsx'))
- df.to_excel(output_path, index=False)
复制代码
请根据你的实际情况修改代码中的相关路径和参数,以确保程序能够正确执行。
|
|