簡體   English   中英

如何排列 Pandas dataframe 基於所有行值為正,一行值為負,兩行值為負...和所有行值為負,

[英]How to arrange Pandas dataframe based on all row values positive, one row values negative, two row values negative ... and all row values negative,

如何排列 Pandas dataframe 基於所有行值為正,一行值為負,兩行值為負...和所有行值為負,

df=pd.DataFrame({
                 'x':[1, 2, 3, -1, -2, -3],
                 'y':[-1, 3, 2, -4, 3, -2],
                 'z':[1 , 1, 5, 2, 1, -1]}]

預計 output

index  x  y  z 
1      2  3  1   all positive  
2      3  2  5    
4     -2  3  1    one  negative
0      1 -1  1
3     -1 -4  2   two  negative
5     -3 -2 -1   all negative 

試試這個:

它獲取大於 0 的行,將它們跨列求和,然后根據值,按降序排序(所有正數應該是最高的,其次是一個負數,兩個負數,並且都是負數)。 排序后,可以刪除num列,因為它已達到目的。

(df.assign(num=df.ge(0).sum(1))
 .sort_values("num", ascending=False)
 .drop(columns=["num"])
 )

    x   y   z
1   2   3   1
2   3   2   5    
4  -2   3   1
0   1  -1   1
3  -1  -4   2
5  -3  -2  -1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM