如何在Python中合并具有不同表列的Excel表?

2024-04-19 07:27:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些不同列的excel表格,如下所示:

Table A: Col1 Col2 Col3

Table B: Col2 Col4 Col5

Table C: Col1 Col6 Col7

我的最后一张桌子应该是:

Table Final: Col1 Col2 Col3 Col4 Col5 Col6 Col7

如果没有特定列的详细信息,则应保持空白。我一次只成功地执行了合并两个表的操作,但我希望将所有表合并在一起。在

这是合并两个工作表的代码:

    import pandas as pd
    import numpy as np
    import glob
    df = pd.read_excel('C:/Users/Am/Downloads/sales-mar-2014.xlsx')
    status = pd.read_excel('C:/Users/Am/Downloads/customer-status.xlsx')
    all_data_st = pd.merge(df, status, how='outer') 
    all_data_st.to_excel('C:/Users/Am/Downloads/a1.xlsx',header=True)

这是我为合并两个以上的工作表而编写的代码:

^{pr2}$

这是我得到的错误:

Traceback (most recent call last):
  File "E:/allfile.py", line 7, in <module>
    all_data = all_data.merge(pd.read_excel(f), how='outer')
  File "C:\Users\Am\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\frame.py", line 6868, in merge
    copy=copy, indicator=indicator, validate=validate)
  File "C:\Users\Am\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\reshape\merge.py", line 47, in merge
    validate=validate)
  File "C:\Users\Am\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\reshape\merge.py", line 524, in __init__
    self._validate_specification()
  File "C:\Users\Am\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\reshape\merge.py", line 1033, in _validate_specification
    lidx=self.left_index, ridx=self.right_index))
pandas.errors.MergeError: No common columns to perform merge on. Merge options: left_on=None, right_on=None, left_index=False, right_index=False

Tags: inpypandasdatalinetablemergeall
2条回答

两张纸的代码也不起作用,对吧?缺少参数,我建议将不同类型的excel工作表保存到新文件夹中,然后根据以下帮助为每种类型的excel工作表创建一个文件: Loading multiple csv files of a folder into one dataframe

然后可以运行合并:

 all_data_st = pd.merge(A, B, how='outer', on='Col2')
 all_data_st = pd.merge(all_data_st, C, how='outer', on='Col1')

交替尝试运行concat:

^{pr2}$

您可以通过下面给定的示例代码来实现这一点。下面给出的代码将把三个.xlsx文件与您指定的列合并。但是,如果您有三个以上的文件,并且有已知的列,您想要合并这些表数据,那么您必须将这些代码放入一个函数中。此函数应以两个数据集和一个合并列名作为输入,并返回一个合并的数据集。您可以迭代excels文件列表并调用此函数以获得最终的合并数据集。在

下面是示例代码:

import pandas as pd
data_A = pd.read_excel('a.xlsx')
data_B = pd.read_excel('b.xlsx')
data_C = pd.read_excel('c.xlsx')
print("File A Data:")
print(data_A)
print("File B Data:")
print(data_B)
print("File C Data:")
print(data_C)

data_AB = pd.merge(left=data_A, right=data_B, on='Col2', how='outer')
data_ABC = pd.merge(left=data_AB, right=data_C, on='Col1', how='outer')
print("Merged Data:")
print(data_ABC)

输出将是包含所有列的所有三个表的合并数据。 希望,这可以帮助你解决你的问题。在

相关问题 更多 >