用Python查找特殊字符出现次数

我有一个供应商和产品的excel,其中supplier B和supplier D是特殊供应商:

供应商产品
Supplier AProduct A
Supplier BProduct A
Supplier CProduct A
…………
Supplier AProduct B
Supplier CProduct C
Supplier DProduct C

我想用Python输出如下信息:

产品供应商供应商数量特殊供应商数量
Product ASupplier A, Supplier B, Supplier C31
Product BSupplier A10
Product CSupplier C, Supplier D21

Python的pandas库

import pandas as pd

# 读取excel文件
df = pd.read_excel('你的文件名.xlsx')

# 查找包含特殊供应商的行
special_suppliers = ['Supplier B', 'Supplier D']
is_special_supplier = df['供应商'].isin(special_suppliers)
df['特殊供应商'] = is_special_supplier

# 计算产品的供应商数量和特殊供应商数量
agg_func = {'供应商': lambda x: ', '.join(x.unique()), '特殊供应商': 'sum'}
result = df.groupby('产品').agg(agg_func)

# 重置索引,并修改列名
result = result.reset_index()
result = result.rename(columns={'供应商': '供应商列表', '特殊供应商': '特殊供应商数量'})

# 输出结果
print(result)


您可以使用 Pandas 库读取 Excel 文件并进行分组和计数,然后生成您需要的报告。以下是可能的 Python 代码:

import pandas as pd

# 读取 Excel 文件
df = pd.read_excel('your_file_name.xlsx')

# 分组并计数
grouped = df.groupby('产品')['供应商'].agg(['count', lambda x: ', '.join(set(x))])

# 计算特殊供应商数量
special_suppliers = {'Supplier B', 'Supplier D'}
grouped['特殊供应商数量'] = grouped['<lambda>'].apply(lambda x: sum(1 for s in x.split(', ') if s in special_suppliers))

# 生成报告
report = grouped.rename(columns={'count': '供应商数量', '<lambda>': '供应商'}).reset_index()
report = report[['产品', '供应商', '供应商数量', '特殊供应商数量']]
print(report)


在这个代码中,我们首先使用 Pandas 的 read_excel() 函数读取 Excel 文件。然后,我们使用 groupby() 函数按照产品分组,并使用 agg() 函数计算每个产品的供应商数量和供应商名称。

接下来,我们使用 apply() 函数计算每个产品的特殊供应商数量。在这个函数中,我们首先使用 Python 的集合类型定义了特殊供应商的名称。然后,我们使用字符串的 split() 方法将供应商名称拆分为列表,然后使用 Python 的 sum() 函数计算特殊供应商数量。

最后,我们使用 Pandas 的 rename() 函数重命名列名,并使用 reset_index() 函数将产品名称转换为列。最后,我们使用 print() 函数输出报告。

请注意,这个代码假定供应商名称列的列名为“供应商”,产品名称列的列名为“产品”。如果您的 Excel 文件中的列名不同,请相应地更改代码中的列名。