Python 3.x 在Python中合并列表中的两个或多个连续表
我有一个数据帧列表。这些表是从pdf文件中提取的。我面临的问题是,提取的两个表是彼此的延续。请参见下面的示例:Python 3.x 在Python中合并列表中的两个或多个连续表,python-3.x,Python 3.x,我有一个数据帧列表。这些表是从pdf文件中提取的。我面临的问题是,提取的两个表是彼此的延续。请参见下面的示例: import pandas as pd df1 = {'0':['Category','Home Services','Mobile','Internet'],'1':['Number',1,1,2]} df2 = {'0':['Job Title','Associate Partner','Developer 1','Developer 2'],'1':['Daily Rate',
import pandas as pd
df1 = {'0':['Category','Home Services','Mobile','Internet'],'1':['Number',1,1,2]}
df2 = {'0':['Job Title','Associate Partner','Developer 1','Developer 2'],'1':['Daily Rate',1000,1000,1000]}
df3 = {'0':['UI Developer','UX Designer','Delivery Manager'],'1':[1000,1000,1000]}
df4 = {'0':['Name','John','Sara','Mike'],'1':['Age',25,30,40]}
这里,df3是df2的延续。接下来,我把它们列在一个列表中。我用来提取表的库是camelot,它返回一个dataframe列表。因此,我将最终结果复制如下:
my_df1 = pd.DataFrame(df1)
my_df2 = pd.DataFrame(df2)
my_df3 = pd.DataFrame(df3)
my_df4 = pd.DataFrame(df4)
my_df_list = [my_df1,my_df2,my_df3,my_df4]
可以从pdf文件中提取n个表。如何将这些表合并为另一个表的延续?在我的示例df2和df3中。有图书馆可以这样做吗?或者以某种方式实现这一点?非常感谢你的帮助
干杯,
阿披舍克您说过“我面临的问题是,提取的两个表是彼此的延续。”因此,如果我正确理解您的问题,您可以使用pandas
concat()
函数连接两个数据帧
df = pd.concat([my_df2,my_df3])
print(df)
输出:
0 1
0 Job Title Daily Rate
1 Associate Partner 1000
2 Developer 1 1000
3 Developer 2 1000
0 UI Developer 1000
1 UX Designer 1000
2 Delivery Manager 1000
您说过“我面临的问题是,提取的两个表是彼此的延续。”因此,如果我正确理解您的问题,您可以使用pandas
concat()
函数连接两个数据帧
df = pd.concat([my_df2,my_df3])
print(df)
输出:
0 1
0 Job Title Daily Rate
1 Associate Partner 1000
2 Developer 1 1000
3 Developer 2 1000
0 UI Developer 1000
1 UX Designer 1000
2 Delivery Manager 1000
IIUC:
df=pd.concat([df1,df2,df3,df4]中el的[pd.DataFrame(el)],轴=1)
df.columns=df.loc[0]
df=df.loc[1:]
产出:
0类别编号。。。姓名年龄
1家庭服务1。。。约翰25
2移动电话1。。。莎拉30
3互联网2。。。迈克40
IIUC:
df=pd.concat([df1,df2,df3,df4]中el的[pd.DataFrame(el)],轴=1)
df.columns=df.loc[0]
df=df.loc[1:]
产出:
0类别编号。。。姓名年龄
1家庭服务1。。。约翰25
2移动电话1。。。莎拉30
3互联网2。。。迈克40
我们在同一条船上
你可以试试这个
# tabula-py
# camelot
# PyPDF2
# pdf2text
# pdftotext
import tabula as tb
import camelot as cm
import pandas as pd
file = "Oct_11.pdf"
# tabula
tb.convert_into(file, file.split('.')[0]+'_tabula.csv', pages="all")
# camelot
tables = cm.read_pdf(file, pages='all')
df = pd.concat([tab.df for tab in tables], ignore_index=True)
df.to_csv(file.split('.')[0]+'_camelot.csv')
# PyPDF2
# pending
# pdf2text
# pending
# pdf2text
# pending
print('Program finished!')
如果您需要有关提取表的帮助,我将在将来更新我的答案到现在为止,你只需要
df=pd.concat([tab.df用于表中的tab],忽略_index=True)
别忘了更改文件名 我们在同一条船上
你可以试试这个
# tabula-py
# camelot
# PyPDF2
# pdf2text
# pdftotext
import tabula as tb
import camelot as cm
import pandas as pd
file = "Oct_11.pdf"
# tabula
tb.convert_into(file, file.split('.')[0]+'_tabula.csv', pages="all")
# camelot
tables = cm.read_pdf(file, pages='all')
df = pd.concat([tab.df for tab in tables], ignore_index=True)
df.to_csv(file.split('.')[0]+'_camelot.csv')
# PyPDF2
# pending
# pdf2text
# pending
# pdf2text
# pending
print('Program finished!')
如果您需要有关提取表的帮助,我将在将来更新我的答案到现在为止,你只需要
df=pd.concat([tab.df用于表中的tab],忽略_index=True)
别忘了更改文件名