使用python将sheet2中出现次数为的关键字添加到sheet1中的现有Excel文件中
我正在使用pandas将数据从web提取到excel工作表中&能够将其保存到工作表1中,现在我想将特定列的数据提取到同一excel的工作表2中,但只想输入关键字的名称以及该关键字在该列中出现的次数 例如,我在表1中有一个标题为“汽车制造商”的列,可以有多行,数据不同,但同一个汽车制造商,如许多客户可以拥有奥迪、福特等,表1中有6-7列,汽车制造商就是其中之一。我想得到这样的数据使用python将sheet2中出现次数为的关键字添加到sheet1中的现有Excel文件中,python,excel,pandas,Python,Excel,Pandas,我正在使用pandas将数据从web提取到excel工作表中&能够将其保存到工作表1中,现在我想将特定列的数据提取到同一excel的工作表2中,但只想输入关键字的名称以及该关键字在该列中出现的次数 例如,我在表1中有一个标题为“汽车制造商”的列,可以有多行,数据不同,但同一个汽车制造商,如许多客户可以拥有奥迪、福特等,表1中有6-7列,汽车制造商就是其中之一。我想得到这样的数据 Manufacturer Count 1. Audi 100 2. Ford 3
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.Series
。您需要将结果转换为\u frame()
,因为只有DataFrame
具有到\u 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()
正如所回答的,在指定列上使用value\u 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
。如文件所述
如果传递现有ExcelWriter对象,则工作表将添加到现有工作簿中。这可用于将不同的数据帧保存到一个工作簿中
请注意,为了将转换为excel()
,必须将系列
(从值_counts()
返回)转换为数据帧
。这可以如上所述(通过到_frame()
)或明确地通过使用:
pd.DataFrame(df.Manufacturer.value_counts()).to_excel(writer, 'Sheet2')
虽然第一个通常要快一点,但第二个可能会被认为更具可读性