如何使用Python按非零条目数量对DataFrame列进行排序
问题描述
现有如下结构的DataFrame:
| a | b | c | d | e |
|---|---|---|---|---|
| a_1 | b_1 | c_1 | d_1 | e_1 |
| 0 | b_2 | c_2 | d_2 | e_2 |
| 0 | b_3 | c_3 | 0 | e_3 |
| 0 | 0 | c_4 | 0 | e_4 |
| 0 | 0 | 0 | 0 | e_5 |
需要处理为以下结构,列顺序调整为e、c、b、d、a,非0值保持原有内容不变:
| e | c | b | d | a |
|---|---|---|---|---|
| e_1 | c_1 | b_1 | d_1 | a_1 |
| e_2 | c_2 | b_2 | d_2 | 0 |
| e_3 | c_3 | b_3 | 0 | 0 |
| e_4 | c_4 | 0 | 0 | 0 |
| e_5 | 0 | 0 | 0 | 0 |
解决方案
你只需要按照目标列顺序重新选取DataFrame的列即可实现需求,示例代码如下:
import pandas as pd # 构造示例DataFrame,可替换为自己的数据源 data = { 'a': ['a_1', 0, 0, 0, 0], 'b': ['b_1', 'b_2', 'b_3', 0, 0], 'c': ['c_1', 'c_2', 'c_3', 'c_4', 0], 'd': ['d_1', 'd_2', 0, 0, 0], 'e': ['e_1', 'e_2', 'e_3', 'e_4', 'e_5'] } df = pd.DataFrame(data) # 按目标顺序重新选择列,直接得到结果 df_result = df[['e', 'c', 'b', 'd', 'a']] # 输出验证结果 print(df_result)
如果你的原始数据中0是字符串类型的'0',上述方法也可以正常生效,不需要额外修改。
内容的提问来源于stack exchange,提问作者Ba Lalo
相关产品推荐
相关产品推荐

