按列总和排序Pandas DataFrame并筛选前2列的实现方法
解决方案:按列总和排序并取前2列
你已经成功筛选出列总和大于4的国家,接下来结合sort_values和tail来实现按列总和排序并取前2列的需求,具体步骤如下:
分步实现
计算列总和:先获取筛选后DataFrame
df1每一列的总和,得到一个以国家名为索引的Series:col_totals = df1.sum()针对你的数据,这个Series的结果是:
Australia 18 Austria 9 United Kingdom 5 dtype: int64排序并取前2列:对列总和进行升序排序(
sort_values()默认升序),此时总和最大的两个值会排在末尾,用tail(2)提取这两个列的名称:top2_country_cols = col_totals.sort_values().tail(2).index这里得到的列名是
['Austria', 'Australia'](对应总和9和18,是前两大的数值)生成最终DataFrame:用提取到的列名从
df1中筛选出对应列:final_df = df1[top2_country_cols]
一行代码简化
如果想更简洁,直接把步骤合并成一行:
final_df = df1[df1.sum().sort_values().tail(2).index]
执行后,final_df就是按列总和排序后的前2列数据,结果如下:
Austria Australia date 2020-01-30 0 9 2020-01-31 9 9
内容的提问来源于stack exchange,提问作者bruvio
相关产品推荐
相关产品推荐

