3 回答

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊
想法是將不匹配的值替換為缺失值然后排序,最后按新索引更改順序:
idx = (df[['colA','colB']].where(df[['colA','colB']] > 0.5)
.sort_values(['colA','colB'], ascending=False).index)
df1 = df.loc[idx]
print (df1)
colA colB
0 0.97 0.01
1 0.88 0.03
3 0.02 0.99
2 0.03 0.87
細(xì)節(jié):
print (df[['colA','colB']].where(df[['colA','colB']] > 0.5))
colA colB
0 0.97 NaN
1 0.88 NaN
2 NaN 0.87
3 NaN 0.99
print (df[['colA','colB']].where(df[['colA','colB']] > 0.5)
.sort_values(['colA','colB'], ascending=False))
colA colB
0 0.97 NaN
1 0.88 NaN
3 NaN 0.99
2 NaN 0.87

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊
構(gòu)建一個(gè)與“a”相同但忽略較小值的新列,并使用此新值和“b”進(jìn)行排序:
df.assign(simplified_a = np.where(df.colA<0.5, 0, df.colA))\
.sort_values(["simplified_a", "colB"], ascending=False).drop("simplified_a", axis=1)
結(jié)果:
colA colB
0 0.97 0.01
1 0.88 0.03
3 0.02 0.99
2 0.03 0.87

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
根據(jù)條件過(guò)濾數(shù)據(jù)場(chǎng),然后排序,然后追加
df1 = df.where(df['colA'] > 0.5).sort_values('colA')
df2 = df.where(df['colA'] <= 0.5).sort_values('colB')
final_frame = df1.append(df2).dropna()
colA colB
0 0.87 0.01
1 0.88 0.03
2 0.03 0.87
3 0.02 0.99
添加回答
舉報(bào)