如何按行的长度对熊猫数据框进行排序

时间:2019-12-01 21:18:31

标签: python pandas sorting dataframe data-science

我有一个熊猫数据框,我想按其行长排序。数据框如下所示:a dataset loaded into a dataframe。该数据帧由大约7000笔交易。我要进行排序,以使包含最多项目的交易位于顶部。

2 个答案:

答案 0 :(得分:1)

您可以尝试:

df.loc[pd.isna(df).sum(axis=1).sort_values(axis=0).index]

简而言之,它的作用是: 如果原始数据帧中的各个单元格为pd.isna(),则true/false将返回形状与您的True相同的NaN数据帧。 接下来,您对每行(.sum(axis=1))进行汇总,这将返回给定行中每一行的NaN数。然后,我将其排序并仅返回排序后的索引,然后将其提供给.loc[]方法以按请求的顺序返回行。

答案 1 :(得分:0)

DataFrame.countaxis = 1一起使用 计算非空元素/ NaN的行数,然后根据其值对该系列进行排序 并使用其索引以DataFrame.reindex重新索引数据框:

df.reindex(index=df.count(axis=1).sort_values(ascending=False).index)

以下是示例

df=pd.DataFrame({'col1':[1,2,np.nan],'col2':[np.nan,4,np.nan],'col3':[1,2,3]})
print(df)
   col1  col2  col3
0   1.0   NaN     1
1   2.0   4.0     2
2   NaN   NaN     3

df=df.reindex(index=df.count(axis=1).sort_values(ascending=False).index).
print(df)

   col1  col2  col3
1   2.0   4.0     2
0   1.0   NaN     1
2   NaN   NaN     3
相关问题