【python】pandas数据输出为xls时报engine不对怎么办?

【背景】

原本用的好好的代码,设计pd.to_excel将df内容输出到xls后缀的excel,结果最近升级过pandas包后就报错说没有正确的引擎,要我装xlwt,结果装了之后指定引擎为xlwt又报错说引擎名称不存在。

【解决办法】

感觉就是环境包的问题,但怎么导入新包都没有用。于是退回原来的pandas试了试,发现又成了。
分析下来,就是因为新版的pandas不支持xlwt了,所以也就无法直接写xls后缀的excel了。
所以,最简单的解决办法还是降级pandas,降级到相应的依赖package也支持写xls为止。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
首先,你需要安装 `pandas` 和 `mysql-connector-python` 库。可以使用以下命令安装: ``` pip install pandas mysql-connector-python ``` 接下来,你可以使用以下代码将 `.txt` 文件转换为 `.xls` 文件: ```python import pandas as pd # 读取文本文件 df = pd.read_csv('data.txt', sep='\t') # 将数据写入 Excel 文件 df.to_excel('data.xls', index=False) ``` 接着,你可以使用以下代码将 `.xls` 文件导入到 MySQL 数据库中: ```python import mysql.connector from mysql.connector import errorcode # 建立数据库连接 cnx = mysql.connector.connect(user='username', password='password', host='hostname', database='database_name') # 创建游标对象 cursor = cnx.cursor() # 创建数据表 TABLES = {} TABLES['table_name'] = ( "CREATE TABLE `table_name` (" "`id` int(11) NOT NULL AUTO_INCREMENT," "`column1` varchar(255) NOT NULL," "`column2` varchar(255) NOT NULL," "PRIMARY KEY (`id`)" ") ENGINE=InnoDB") # 检查数据表是否存在,不存在则创建 for table_name in TABLES: table_description = TABLES[table_name] try: cursor.execute(table_description) except mysql.connector.Error as err: if err.errno == errorcode.ER_TABLE_EXISTS_ERROR: print(f"Table {table_name} already exists.") else: print(err.msg) # 读取 Excel 文件 df = pd.read_excel('data.xls') # 插入数据数据库 for row in df.itertuples(): cursor.execute(f"INSERT INTO table_name (column1, column2) VALUES ('{row.column1}', '{row.column2}')") # 提交事务 cnx.commit() # 关闭游标和数据库连接 cursor.close() cnx.close() ``` 以上代码中,你需要将 `username`、`password`、`hostname` 和 `database_name` 替换为你的 MySQL 数据库的实际信息。同时,你需要将 `table_name` 和 `column1`、`column2` 替换为你的数据表和实际列名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每日出拳老爷子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值