我正在使用pandas从web获取数据到excel工作表中&能够将其保存到表1中,现在我想将特定列的数据提取到同一excel的表2中,但只想将关键字的名称和该关键字在该列中出现的次数放入其中。
例如,我在第一张表中有一个标题为汽车制造商的列&可以有多行不同的数据,但相同的汽车制造商,就像许多客户可以拥有奥迪、福特等一样&在sheet1中有6-7列,汽车制造商是其中之一。我想要像这样的数据
Manufacturer Count
1. Audi 100
2. Ford 30
3. Mercedes 25
4. xxxxx 9在表2中。Python代码示例将非常感谢!
发布于 2016-06-02 12:02:12
您要求similar question将数据添加到第二个excel工作表中。也许您可以解决围绕to_excel()部件的任何问题。
在类别计数上,您可以这样做:
df.Manufacturer.value_counts().to_frame()在counts上安装pd.Series。您需要转换结果.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()发布于 2016-06-02 17:58:36
正如Stefan回答的那样,在指定的列上使用value_counts()就可以了。
由于您要将多个DataFrames保存到单个工作簿,因此我将使用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对象,则工作表将添加到现有工作簿中。这可用于将不同的DataFrames保存到一个工作簿
请注意,为了使用to_excel(),必须将Series (从value_counts()返回)转换为DataFrame。这可以如上所述(通过to_frame())完成,也可以通过使用以下命令显式完成:
pd.DataFrame(df.Manufacturer.value_counts()).to_excel(writer, 'Sheet2')虽然第一个通常要快一点,但第二个可能更具可读性。
https://stackoverflow.com/questions/37582198
复制相似问题