如何用Pandas统计字符串列字符数并按字符数分组统计行数
解决方法:统计名称长度并按行数降序排列
我来帮你搞定这个需求!你之前已经算出了每个名称的字符长度,但还缺少按长度分组统计行数和按行数降序排序这两个关键步骤,下面是完整的实现代码和详细解释:
完整代码
import pandas as pd # 读取你的CSV文件(替换成实际文件路径) df = pd.read_csv('your_file.csv') # 链式操作完成所有需求:计算长度→分组统计→排序→重命名列 result = (df # 新增列:计算每个name的字符长度 .assign(str_len_count=lambda x: x['name'].str.len()) # 按长度分组,统计每组的行数(对应id的数量) .groupby('str_len_count') .size() # 将分组结果转为DataFrame,并给统计列命名为id_count .reset_index(name='id_count') # 按行数(id_count)降序排列 .sort_values(by='id_count', ascending=False) # 重命名列名到你需要的格式 .rename(columns={ 'str_len_count': 'chars(str_len_count)', 'id_count': 'rows(id_count)' })) # 输出结果 print(result)
分步解释
- 读取数据:用
pd.read_csv加载你的CSV文件,替换成实际文件路径即可。 - 计算字符长度:用
assign新增str_len_count列,存储每个name的字符长度(和你之前的df['NAME_Count'] = df['name'].str.len()效果一致,链式写法更简洁)。 - 分组统计行数:
groupby('str_len_count').size()会按字符长度分组,统计每组的行数(也就是对应id的数量)。如果你的id列没有空值,用groupby('str_len_count')['id'].count()也能得到同样结果。 - 转为DataFrame并命名列:
reset_index把分组后的索引转为列,同时给统计的行数列命名为id_count。 - 按行数降序排序:
sort_values(by='id_count', ascending=False)实现按行数从多到少排列。 - 重命名列名:用
rename把列名调整成你需要的chars(str_len_count)和rows(id_count)格式。
验证结果
用你提供的测试数据运行后,会得到完全符合需求的输出:
chars(str_len_count) rows(id_count) 0 7 2 1 11 2 2 14 1
内容的提问来源于stack exchange,提问作者Baobab1988
相关产品推荐
相关产品推荐

