python - Pandas 将 df.count() 结果的最后 n 行求和为一行

我正在寻找一种方法来生成数据框的漂亮摘要统计信息。考虑以下示例:

>> df = pd.DataFrame({"category":['u','v','w','u','y','z','y','z','x','x','y','z','x','z','x']})

>> df['category'].value_counts()
z    4
x    4
y    3
u    2
v    1
w    1

>> ??
           count  pct
z              4  27%
x              4  27%
y              3  20%
Other (3)      4  27%

结果将最后 n=3 行的值计数相加,删除它们,然后将它们作为一行添加到原始值计数中。将所有内容都作为百分比也很好。任何想法如何实现这个?干杯!

最佳答案

对于具有百分比的 DataFrame,请使用 Series.iloc通过索引,通过 Series.to_frame 创建 DataFrame , 添加由百分比填充的新行和新列:

s = df['category'].value_counts()

n= 3
out = s.iloc[:-n].to_frame('count')
out.loc['Other ({n})'] = s.iloc[-n:].sum()
out['pct'] = out['count'].div(out['count'].sum()).apply(lambda x: f"{x:.0%}")
print (out)
           count  pct
z              4  27%
x              4  27%
y              3  20%
Other (3)      4  27%

https://stackoverflow.com/questions/75196357/

相关文章:

python - 根据条件将新数据从另一个 Dataframe 添加到 Dataframe

vbscript - 当我的 InstallShield 安装程序尝试运行我的 VBS 自定义操作时

c++ - std::variant 使用整数数组中的元素作为 std::variant 中的目标类

fortran - Fortran 能否在逻辑运算中强制遵守参数顺序?

sql-server - 从现有数据库生成 SQL DDL 和内容的工具

.net - .NET : System. InvalidOperationException :

c++ - 是不是 vector.at(vector.size()-1) 比 vector.back

perl - Perl 包变量什么时候超出范围?

python - 查找给定范围内的数字,使给定列表中任何元素的数字的 gcd 始终为 1

c - 尝试复制有关可变参数的 printf 行为