使用Pandas按列值出现次数对Excel表格数据进行排序
使用Pandas统计Excel列值出现次数并排序的解决方案
嘿,我来帮你搞定这个需求!先把你的样本数据清晰整理出来,然后一步步实现统计排序的操作:
你的样本数据(整理后):
| A列 | B列内容 |
|---|---|
| Italy | Transport for London..... |
| Italy | Roseanne Barr Actor leavin..... |
| America | Americas Transport for London........ |
| America | Transport for London..... |
| America | Roseanne Barr Actor leavin..... |
| France | Americas Transport for London........ |
你的需求很明确:统计A列各值的出现次数,按次数从多到少排序(America3次→Italy2次→France1次)。下面是具体的Pandas实现步骤:
步骤1:导入Pandas并读取/构造数据
首先导入Pandas库,如果是读取本地Excel文件,用pd.read_excel();如果是先测试样本数据,可以直接构造DataFrame:
import pandas as pd # 方式1:读取本地Excel文件(假设文件名为sample.xlsx) # df = pd.read_excel('sample.xlsx') # 方式2:构造你的样本DataFrame(方便快速测试) data = { 'A': ['Italy', 'Italy', 'America', 'America', 'America', 'France'], 'B': ['Transport for London.....', 'Roseanne Barr Actor leavin.....', 'Americas Transport for London........', 'Transport for London.....', 'Roseanne Barr Actor leavin.....', 'Americas Transport for London........'] } df = pd.DataFrame(data)
步骤2:统计A列值的出现次数并排序
方法一:直接统计频次(得到各值的次数结果)
用value_counts()方法可以直接统计列值的出现次数,默认就是降序排列,保险起见可以显式指定排序规则:
# 统计A列各值的出现次数,按降序排序 count_result = df['A'].value_counts().sort_values(ascending=False) print(count_result)
执行后输出:
America 3 Italy 2 France 1 Name: A, dtype: int64
如果需要把结果转换成更易读的DataFrame格式(比如后续要保存到Excel):
# 将Series转换为DataFrame并重新命名列 count_df = count_result.reset_index() count_df.columns = ['A列值', '出现次数'] print(count_df)
输出:
A列值 出现次数 0 America 3 1 Italy 2 2 France 1
方法二:对原表格的行按A列值的频次排序(保留所有行)
如果你需要保留原表格的所有行,并且让出现次数多的A值对应的行排在前面,可以这样做:
# 先给每行添加对应的A值出现次数列 df['临时_出现次数'] = df['A'].map(df['A'].value_counts()) # 按出现次数降序排序,相同次数的可以按A列值排序(可选) sorted_df = df.sort_values(by='临时_出现次数', ascending=False) # 删除临时添加的列(如果不需要) sorted_df = sorted_df.drop(columns='临时_出现次数') print(sorted_df)
执行后输出的行顺序会是:所有America的行在前,接着是Italy的行,最后是France的行。
内容的提问来源于stack exchange,提问作者Tayyab Nasir
相关产品推荐
相关产品推荐

