python - IndexError: 使用 pandas 将单个 excel 行导出到 JSON 文件时,索引 1 超出轴 0 的范围,大小为 1
问题描述
例如,我有一个包含 100 行的电子表格,并且希望将每一行导出到一个名为 <行号>.json 的单个 JSON 文件。
但是我收到此错误,并且不确定我可能做错了什么。
代码如下:
import pandas as pd
from pathlib import Path
from pandas import read_excel
root_location = Path("/fullpath/")
df = pd.read_excel("/fullpath/toexcelfile.xlsx")
rowNumber = 0
for index, row in df.iterrows():
with open(root_location / (str([rowNumber]) + ".json"), "w") as f:
f.write(str(row[rowNumber]))
rowNumber +=1
非常感谢你的帮助。
编辑:
我试过了
import pandas as pd
from pathlib import Path
from pandas import read_excel
df = pd.read_excel("/fullpath/excel.xlsx", index=[0, 1], columns=['A'])
for index, row in df.iterrows():
with open((str([index]) + ".json"), "w") as f:
f.write(row.to_string(row))
现在给我以下错误:
TypeError: read_excel() got an unexpected keyword argument 'index'
解决方案
您正在尝试访问超出行中数组边界的索引row
,您f.write(str(row[rowNumber]))
正在尝试访问.rowNumber
row
您已经拥有该行,for
并且row[rowNumber]
您没有访问第rowNumber
-th 行,但是rowNumber
当前行的第 -th 元素,如果数据格式不正确,这可能会导致索引超出范围,如我们所见。
总之,在每次迭代中,for
您都在访问元素row[rowNumber]
,但每次都将row
和递增rowNumber
1;通过这个我们可以说程序只会考虑dataframe
(即[0,0],[1,1],...,[n,n])的对角线的值。
由于您必须导出每一行,您可以执行类似于下面简化示例的操作,仅使用row
给定的 from iterrows()
:
import pandas as pd
df = pd.DataFrame((['Value0', 'Value1'],['Value2', 'Value3']), index=[0, 1], columns=['A', 'B'])
# | A | B |
# 0 | Value0 | Value1 |
# 1 | Value2 | Value3 |
for column, row in df.iterrows():
with open((str([column]) + ".txt"), "w") as f:
f.write(str(row))
输出:
[0].txt
A Value0
B Value1
Name: 0, dtype: object
[1].txt
A Value2
B Value3
Name: 1, dtype: object
编辑更新的问题:
你有一个TypeError
因为read_excel()
不接受与构造函数相同的参数DataFrame()
。要处理这个问题,您需要阅读 excel 文件并dataframe
根据您的需要格式化。由于我不知道该文件的确切格式,因此无法提供确切的解决方案。我能做的最好的就是让你参考解释这个问题的每一个论点的文档。
此外,只是一个提示,我建议您打印一个虚拟dataframe
模型作为实际模型的示例,以便更好地理解如何正确处理它
推荐阅读
- javascript - 如何检查键盘上的两个按钮是否同时按键以触发一个功能
- plugins - FormValidation 的 FieldStatus 插件不起作用?
- javascript - “函数”真的是 Javascript 中的数据类型吗?
- python-3.x - pythom 问题包 suds 肥皂
- flutter - 颤振相机插件防止方向改变?
- html - 在网站上查询表单并将数据提取到 Excel 的最简单方法是什么?
- flask - 在渲染之前如何在 Flask 中读取网页?
- websocket - WebSocket 不向所有连接的客户端发送数据,仅向发送数据的客户端发送数据
- python - 带参数的python过滤函数
- javascript - 有没有办法通过javascript获取webm的框架宽度和框架高度属性?