【问题标题】:How I append specific columns from various excels and all of their sheets using pandas?如何使用 pandas 附加来自各种 excel 的特定列及其所有工作表?
【发布时间】:2020-10-05 01:02:32
【问题描述】:

我有很多擅长的工作表(每个工作表都有不同的名称)和不同的列。

每个 excel 的每张表都有我要提取的三列(名称、标题、数据库)并将它们放在一个只有一张表的文件中。因此,输出文件应包含三列,由所有其他 excel 和工作表的列名称、标题、数据库数据组成。

尝试使用以下代码执行此操作,仅从每个第一张表中获取数据。

通过在read_excel() 中添加sheet_name=None,我看到:TypeError: Can only append a Series if ignore_index=True or if the Series has a name.

通过在append() 中添加ignore_index=True,输出文件中没有数据。

感谢您的宝贵时间!我是编程初学者。

import pandas as pd

#Setting SourceFiles
my_files = [(r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\a.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\b.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\c.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\d.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\e.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\f.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\g.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\h.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\i.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\j.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\k.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\l.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\m.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\n.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\o.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\p.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\q.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\r.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\s.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\t.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\u.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\v.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\w,y,z.xls')]

#Combining the SourceFiles
df = pd.DataFrame()

for f in my_files:
    data = pd.read_excel(f) #Here I set the sheet_name=None
    df = df.append(data)    #Here I set the ignore_index=True

#Defining the columns I want from the Source file and how I want them (Sorted and with Dropped duplicates)

columns_i_want = (pd.DataFrame(df, columns= ['Name', 'Title', 'Database']))
sorted_data = column_i_want.sort_values('Name', ascending=True)

#Transfering the data to an other excel
column_i_want.to_excel (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\output.xlsx', index = False, header=True)

【问题讨论】:

    标签: python excel pandas append


    【解决方案1】:

    所以,我找到了方法!我不认为这是最好或最简单的方法,但它对我有用:

    import pandas as pd
    
    test = [(r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\a.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\b.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\c.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\d.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\e.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\f.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\g.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\h.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\i.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\j.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\k.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\l.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\m.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\n.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\o.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\p.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\q.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\r.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\s.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\t.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\u.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\v.xls'),
            (r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\REAL\w,y,z.xls')]
    
    df = pd.DataFrame()
    
    def merge(data):
        df = pd.concat(pd.read_excel(data, sheet_name=None), ignore_index=True)
        df = pd.DataFrame(df, columns= ['Name', 'Title', 'Database'])
        column_i_want = (pd.DataFrame(df).drop_duplicates(subset=["Title"]))
        sorted_data = (column_i_want.sort_values(['Name', 'Title'], ascending=True))
        return sorted_data
    
    for i in test:
        x = merge(i)
        df = df.append(x)
    
    df.to_excel(r'C:\Users\John\Dev\Mini_Personal_scripts\The_Excel_Project\Excels\output.xlsx', index = False, header=True)
    

    【讨论】:

      猜你喜欢
      • 2018-04-19
      • 2019-02-19
      • 2018-09-15
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      • 2018-11-24
      相关资源
      最近更新 更多