鱼C论坛

 找回密码
 立即注册
查看: 3073|回复: 9

提取文件转Excel

[复制链接]
发表于 2023-7-20 15:11:39 | 显示全部楼层
您可以在调用  pd.read_csv  方法时传入  names  参数,这将设置 DataFrame 的列名。代码修改如下:
  1. import os
  2. import pandas as pd
  3. # 读取三省站点.xlsx文件
  4. df_stations = pd.read_excel('站点.xlsx', usecols=['站号'])
  5. # 获取福建省的所有区站号
  6. fujian_stations = set(df_stations['站号'].dropna().astype(int))
  7. # 遍历MON文件夹下的所有福建省文件
  8. mon_folder = 'MON'
  9. fujian_files = []
  10. for filename in os.listdir(mon_folder):
  11.     if filename.endswith('.txt') and filename[-9:-4].isdigit() and int(filename[-9:-4]) in fujian_stations:
  12.         fujian_files.append(os.path.join(mon_folder, filename))
  13. # 将福建省所有txt文件转为excel文件
  14. output_folder = 'output'
  15. os.makedirs(output_folder, exist_ok=True)
  16. for file_path in fujian_files:
  17.     df = pd.read_csv(file_path, delimiter=' ', names=['Year', 'Mon', 'Day', 'PRE'])  
  18.     output_path = os.path.join(output_folder, os.path.basename(file_path).replace('.txt', '.xlsx'))
  19.     df.to_excel(output_path, index=False)
复制代码

在这段代码中, names=['Year', 'Mon', 'Day', 'PRE']  设置了列的名字为 'Year', 'Mon', 'Day', 'PRE'。所以在读取txt文件时,即使源文件中没有列名,也会按照您设定的列名来生成DataFrame。之后,当您把DataFrame存为Excel文件时,列名也会一并被存入。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-20 15:37:13 | 显示全部楼层
王大可2000 发表于 2023-7-20 15:30
为什么会出现以下错误
chunks = self._reader.read_low_memory(nrows)
  File "pandas\_libs\parsers ...

这个错误是由于 pandas 在解析文件时发现了数据的不一致性。具体来说,它期望在第13行看到15个字段,但实际上看到了16个字段。这可能是由于数据文件中存在额外的分隔符、缺失值或者其他的格式错误。

一种可能的解决方案是增加参数  error_bad_lines=False  到  pd.read_csv  函数中,这样在读取数据时,如果遇到格式错误的行,pandas 就会跳过这一行而不会报错。例如:

  1. df = pd.read_csv(file_path, delimiter=' ', names=['Year', 'Mon', 'Day', 'PRE'], error_bad_lines=False)
复制代码


然而这种做法有一定的风险,因为它可能会导致某些数据被无视。所以在使用这种方法之前,您需要确定这样做不会对您的数据分析产生不良影响。

另一种解决方案是打开文本文件并检查第13行(或者其他导致问题的行),看看是否存在任何显而易见的格式错误。如果存在,您可以手动修复这个问题。或者,如果文件过大或错误太多无法手动修复,您也可以编写代码来自动清理或预处理这些数据。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-29 04:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表