pandas Python xlWings从Range对象生成json-File

nfg76nw0  于 2023-01-24  发布在  Python
关注(0)|答案(1)|浏览(153)

我想从Python xlWings Range对象生成一个json文件:

import pandas as pd
import numpy as np
import os
import xlwings as xw
 wb=xw.Book(file)
 ws=wb.sheets[0]
 dr=ws.used_range.options(pd.DataFrame)
 df=pd.DataFrame(data=dr)

 jfile=df.to_json(orient='columns')

在这一点上,程序处于无限循环中:df=pd. Dataframe (数据=dr)

hwamh0ep

hwamh0ep1#

如果在dr=行的末尾使用.value,则将dr设置为DataFrame,并且不需要使用df=pd.DataFrame(data=dr)
ws.used_range.options(pd.DataFrame)返回一个range对象,因此您不太可能尝试将其转换为DataFrame。这是我的测试数据的输出,其中使用的range是A1:D11:

#Out[]: 
#                                    0
#0    (((<Range [Book1]Sheet1!$A$1>)))
#1    (((<Range [Book1]Sheet1!$B$1>)))
#2    (((<Range [Book1]Sheet1!$C$1>)))
#3    (((<Range [Book1]Sheet1!$D$1>)))
#4    (((<Range [Book1]Sheet1!$A$2>)))
#...
#39  (((<Range [Book1]Sheet1!$D$10>)))
#40  (((<Range [Book1]Sheet1!$A$11>)))
#41  (((<Range [Book1]Sheet1!$B$11>)))
#42  (((<Range [Book1]Sheet1!$C$11>)))
#43  (((<Range [Book1]Sheet1!$D$11>)))

如果使用ws.used_range.options(pd.DataFrame).value,则返回的数据类型为pd.DataFrame,然后可以转换为json:

df = ws.used_range.options(pd.DataFrame).value
jfile=df.to_json(orient='columns')

请参阅此处的转换器和选项文档,其中包含一个使用.value的示例。
返回类型:

type(ws.used_range.options(pd.DataFrame))
#Out[]: xlwings.main.Range
type(ws.used_range.options(pd.DataFrame).value)
#Out[]: pandas.core.frame.DataFrame

相关问题