Python 从列表列表创建数据帧
我正在尝试使用DocxPython来组合多个只包含表的word文档。代码查找指定文件夹中的所有docx文件,并创建数据列表。但是,我一直在将这些数据从列表转换为数据帧。 . 我编写的代码如下:Python 从列表列表创建数据帧,python,pandas,python-docx,Python,Pandas,Python Docx,我正在尝试使用DocxPython来组合多个只包含表的word文档。代码查找指定文件夹中的所有docx文件,并创建数据列表。但是,我一直在将这些数据从列表转换为数据帧。 . 我编写的代码如下: import pandas as pd import io import os import csv from docx import Document import glob def read_docx_tables(filename, tab_id=None, **kwargs): def
import pandas as pd
import io
import os
import csv
from docx import Document
import glob
def read_docx_tables(filename, tab_id=None, **kwargs):
def read_docx_tab(tab, **kwargs):
vf = io.StringIO()
writer = csv.writer(vf)
for row in tab.rows:
writer.writerow(cell.text for cell in row.cells)
vf.seek(0)
return pd.read_csv(vf, **kwargs)
doc = Document(filename)
if tab_id is None:
return [read_docx_tab(tab, **kwargs) for tab in doc.tables]
else:
try:
return read_docx_tab(doc.tables[tab_id], **kwargs)
except IndexError:
print('Error: specified [tab_id]: {} does not exist.'.format(tab_id))
raise
path = 'C:\\data\\' # use your path
filelist = glob.glob(path + "/*.docx")
li = []
for file in filelist:
df= read_docx_tables(file)
li.append(df)
print(li)
如果我在末尾尝试代码:data=pd.concat(li),则会发生以下错误:TypeError:无法连接类型为“”的对象;只有Series和DataFrame OBJ有效
任何帮助都将不胜感激而不是
li.append(df)
tryprint(type(df))
并查看返回的内容。另外,考虑在你的函数中添加类型提示,MyPy可能在你运行这个代码之前指出你的问题。嘿,丹,谢谢你的建议。我一定会调查这件事。至于print(type(df)),输出是“”,错误消息告诉您它需要是DataFrame或Series类型,可能您想要li.append(pd.concat(df))
?或者更好的是,将concat放在read_docx_表的返回值中