python-3.x - 如何停止 sort_values 按字母顺序按列名排序?
问题描述
我正在使用熊猫数据框,其中一些列没有条目。我想把所有列放在最后,我设法做到了(见下面的代码),但我也注意到,在对剩余的列进行排序后,也按列名的字母顺序按降序排序。我可以防止这种情况发生吗?
输入数据框:
,colA,colB,colC,colD,colF
rowA,X,nan,nan,X,nan
rowB,nan,X,nan,nan,X
rowC,X,nan,nan,X,X
rowD,X,nan,nan,nan,nan
rowE,nan,X,nan,nan,X
代码:
import pandas as pd
df = pd.read_csv (r'q1.csv', dtype= 'str', index_col=0, na_values = 'nan')
ind = df.notnull().astype('int').any().sort_values(ascending= False).index
out = df.loc[:,ind]
out.to_csv(r'out.csv', na_rep= 'nan')
输出数据框:
,colF,colD,colB,colA,colC
rowA,nan,X,nan,X,nan
rowB,X,nan,X,nan,nan
rowC,X,X,nan,X,nan
rowD,nan,nan,nan,X,nan
rowE,X,nan,X,nan,nan
本质上,我想保持所有其他列的顺序。
谢谢。
解决方案
如果我理解正确,你可以试试这个。
m = df.isna().all().sort_values(kind='mergesort')
df_new = df[m.index]
Out[243]:
colA colB colD colF colC
rowA X NaN X NaN NaN
rowB NaN X NaN X NaN
rowC X NaN X X NaN
rowD X NaN NaN NaN NaN
rowE NaN X NaN X NaN
推荐阅读
- c# - 使用 VS2019 通过“添加连接的服务”添加 WCF
- json - 在 JSONiq 中执行连接(例如,使用过滤器语法)
- spring-boot - Vaadin + Spring Boot + Osgi
- c# - c#中这种奇怪的条件语句可以工作吗?
- html - 如何在标题中定位跨度
- python - Amazon SageMaker 与 huggingface load_dataset 到 Amazon S3 存储桶
- python - 如何使用 matplotlib 将 displot 添加到子直方图
- sapui5 - 如何覆盖某个模块(sap.ui.export.Spreadsheet)中的依赖关系?
- angular - 在角度中,在组件中调用所有方法后调用订阅函数,这导致我无法使用响应
- javascript - 根据从 API 返回的 JSON 数据动态生成 Angular Material 仪表板卡