在Pandas/Python中拆分DataFrame列元素并统计频次
解决方案
假设你的DataFrame中Name列的点餐项目用顿号分隔(如果是其他分隔符,替换代码里的分隔符即可),以下是实现需求的具体代码:
导入依赖
import pandas as pd
示例数据(可替换为你的真实DataFrame)
data = {'Name': ['汉堡、薯条、可乐', '汉堡、鸡翅', '薯条、可乐、鸡翅']} df = pd.DataFrame(data)
1. 获取排序后的唯一项目列表
# 拆分每个单元格的餐品,展开为单行条目 all_items = df['Name'].str.split('、', expand=True).stack() # 去重后按字典序排序 unique_sorted_items = sorted(all_items.unique()) print(unique_sorted_items)
输出示例:
['汉堡', '鸡翅', '可乐', '薯条']
2. 统计每个餐品的频次(计数器累加)
方法一:简洁版(split+stack+value_counts)
item_counts = df['Name'].str.split('、', expand=True).stack().value_counts().sort_values(ascending=False) print(item_counts)
输出示例:
汉堡 2 薯条 2 可乐 2 鸡翅 2 dtype: int64
方法二:分步版(更直观,适合理解过程)
# 将每个单元格的餐品转为列表 df['Items'] = df['Name'].str.split('、') # 把列表展开为单行条目 expanded_df = df.explode('Items') # 统计频次并按降序排序 item_counts = expanded_df['Items'].value_counts().sort_values(ascending=False) print(item_counts)
注意:如果你的餐品分隔符是逗号、空格或其他符号,只需将代码中的
'、'替换为对应的分隔符即可。
内容的提问来源于stack exchange,提问作者Muhammad Ali
相关产品推荐
相关产品推荐

