【问题标题】:Adding Keyword with count of occurrence in sheet2 to existing excelfile from sheet1 with pandas python使用pandas python将sheet2中出现次数的关键字添加到sheet1中的现有excel文件
【发布时间】:2016-06-02 03:36:13
【问题描述】:

我正在使用 pandas 将数据从 Web 提取到 Excel 工作表中并能够将其保存到工作表 1,现在我想将特定列的数据获取到相同 excel 的工作表 2 中,但只想输入关键字的名称 &该关键字在该列中出现的次数

例如,我在第一张表中有一个标题为汽车制造商的列,并且可以有多行具有不同的数据,但是像许多客户一样的同一汽车制造商可以拥有奥迪、福特等,并且在第一张表中有 6-7 列&汽车制造商就是其中之一。我想得到像

这样的数据
   Manufacturer Count
 1. Audi        100
 2. Ford        30
 3. Mercedes    25
 4. xxxxx       9

在第 2 页中。 非常感谢 Python 代码示例!

【问题讨论】:

    标签: python excel pandas


    【解决方案1】:

    您向similar question 询问了向第二张 Excel 表添加数据的问题。也许您可以解决 to_excel() 部分周围的任何问题。

    关于类别计数,您可以:

    df.Manufacturer.value_counts().to_frame()
    

    使用counts 获取pd.Series。您需要转换结果.to_frame(),因为只有DataFrameto_excel() 方法。

    总的来说,使用我的链接答案:

    import pandas as pd
    from openpyxl import load_workbook
    
    book = load_workbook('Abc.xlsx')
    writer = pd.ExcelWriter('Abc.xlsx', engine='openpyxl') 
    writer.book = book
    writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
    df.Manufacturer.value_counts().to_frame().to_excel(writer, sheet_name='Categories')
    writer.save()
    

    【讨论】:

      【解决方案2】:

      正如Stefan 所回答的那样,在指定列上使用value_counts() 就可以了。

      由于您要将多个 DataFrame 保存到单个工作簿,我会使用 pandas.ExcelWriter

      import pandas as pd
      
      writer = pd.ExcelWriter('file_name.xlsx')
      df.to_excel(writer)    # this one writes to 'Sheet1' by default
      pd.Series.to_frame(df.Manufacturer.value_counts()).to_excel(writer, 'Sheet2')
      writer.save()
      

      不一定使用openpyxl。如to_excel() 文档中所述,

      如果传递一个现有的 ExcelWriter 对象,那么工作表将被添加到现有的工作簿中。这可用于将不同的 DataFrame 保存到一个工作簿中

      请注意,为了使用to_excel()Series(从value_counts() 返回)必须转换为DataFrame。这可以按照上述方式完成(通过to_frame())或明确地使用:

      pd.DataFrame(df.Manufacturer.value_counts()).to_excel(writer, 'Sheet2')
      

      虽然第一个通常更快一点,但第二个可能被认为更具可读性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-22
        • 1970-01-01
        • 2019-11-07
        • 1970-01-01
        • 2020-04-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多