【问题标题】:how to import the excel tabs and give the name of tabs in new column accordingly in python?如何在python中导入excel选项卡并相应地在新列中给出选项卡的名称?
【发布时间】:2019-06-28 06:01:32
【问题描述】:

enter image description here 我有一个名为Example.xls 的文件,其中我在标签salespurchase 中有数据。
我们在从 A 列到 E 列的两个选项卡中都有数据。 当我通过 pandas 模块导入这些数据时,我想要像 A 到 F 列这样的结果,其中 F 列应该显示名称表名称。如何在熊猫模块中显示工作表名称的名称?

我正在使用代码

all= pd.read_excel(Example.xlsx',sheet_name=['Sales','Purchas'])
enter image description here 然后

df= pd.concat(All[frame]for fram in All.keys())

然后我想将选项卡的名称放在我的数据框“全部”中的最后一列中,分别是 F

【问题讨论】:

    标签: python excel pandas


    【解决方案1】:

    我认为这是最简单的方法。

    import pandas as pd
    
    path = r'path_of_your_file'
    workbook = pd.read_excel(path, sheet_name = None)
    df= pd.DataFrame()
    for sheet_name, sheet in workbook.items():
        sheet['sheet'] = sheet_name
        df = df.append(sheet)
    
    # Reset your index or you'll have duplicates
    df = df.reset_index(drop=True)
    

    【讨论】:

    • 我有错误 >>> import pandas as pd >>> path = r'C:\Users\dell\Desktop\kk\' SyntaxError: EOL while scanning string literal >>> path = r 'C:\Users\dell\Desktop\kk\Example.xlsx' >>> workbook = pd.read_excel(path, sheet_name = None) >>> df= pd.DataFrame() >>> for sheet_name,工作簿中的工作表.items(): sheet['sheet'] = sheet_name df = df.append(sheet) SyntaxError: unexpected indent >>>
    • 这一行是你的问题:path = r'C:\Users\dell\Desktop\kk\'。最后一个反斜杠转义结束撇号。反正你根本不需要那行,路径应该包含文件名。
    • Rahul--- 它正在合并所有工作表。但我想要做的是我想在最后一列中也有工作表名称,以便我可以读取哪些数据属于哪个工作表......我希望你现在得到我的问题......请帮助我......
    • @ManojKumar 我认为您在错误答案中添加了评论,但我的代码会根据您的需要将工作表名称添加到最后一列。
    • 嗨拉胡尔——@Reimar。你好吗,伙计。希望一切都会好起来的。我提出了一个问题,希望你能帮助我。真的很感谢您的支持。请检查我今天的问题。
    【解决方案2】:

    以下代码将解决您的问题:

    import os
    from glob import glob
    import pandas as pd
    
    f_mask = r'path\*.xlsx' ## The folder path where your Example.xlsx is stored
    
    df = \
    pd.concat([df.assign(file=os.path.splitext(os.path.basename(f))[0],
                         sheet=sheet)
               for f in glob(f_mask)
               for sheet, df in pd.read_excel(f, sheet_name=None).items()],
              ignore_index=True)
    

    代码的工作方式如下:

    1. 检查基本文件夹并获取其中的所有 .xlsx 文件
    2. 一一读取文件
    3. 另外制作两列,一列用于文件名,另一列用于工作表名称

    如果您想对超过 1 个 .xlsx 文件进行练习,此解决方案将起作用

    【讨论】:

    • Glob 基本上是去那个文件夹并看到不同的 .xlsx 文件。以后如果你想对多个 excel 文件做同样的练习,这会解决它。
    • 我需要定义所有标签的名称吗?我正在使用代码 all= pd.read_excel(Example.xlsx',sheet_name=['Saales','Purchas']) 然后 df= pd.concat(All[frame]for fram in All.keys())..然后在我想将选项卡的名称放在我的数据框“All”中的最后一列中,分别是 F
    • 为了使上述代码正常工作,请将所有 excel 文件或 1 放在任何文件夹中。在f_mask 中提供该文件夹路径并简单地运行代码。无需定义任何东西。代码会处理一切!
    • 我试过但显示错误“ Traceback (最近一次调用最后一次): File "", line 2, in pd.concat([df.assign(file=os .path.splitext(os.path.basename(f))[0], NameError: name 'pd' is not defined"
    • 用另外一个包更新了答案
    猜你喜欢
    • 1970-01-01
    • 2014-09-04
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 2015-11-25
    相关资源
    最近更新 更多