使用pandas python将sheet2中出现次数的关键字添加到sheet1中现有的excelfile中

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

例如,我有一个标题作为汽车制造商在表一&列可以有多个不同的数据,但同样的汽车制造商像许多客户可以拥有奥迪,福特等,有6-7列在Sheet1和汽车制造商是其中之一。 我想获得像这样的数据

Manufacturer Count 1. Audi 100 2. Ford 30 3. Mercedes 25 4. xxxxx 9 

在表2. Python代码示例将不胜感激!

你问了一个类似的问题 ,把数据添加到第二个Excel表格。 也许你可以解决to_excel()部分的任何问题。

在分类计数上,你可以做:

 df.Manufacturer.value_counts().to_frame() 

得到一个pd.Seriescounts 。 您需要转换结果.to_frame()因为只有DataFrame具有to_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() 

正如Stefan所回答的那样,在指定的列上使用value_counts()将会这样做。

既然你保存多个数据框到一个工作簿,我会使用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') 

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