gpt4 book ai didi

python - 对 Pandas DataFrame 进行排序忽略某些值

转载 作者:行者123 更新时间:2023-12-03 23:47:09 25 4
gpt4 key购买 nike

有一个值接近 1 和接近 0 的 Pandas DataFrame:

df = pd.DataFrame({
'colA': (0.97, 0.88, 0.03, 0.02),
'colB': (0.01, 0.03, 0.87, 0.99),
})

根据值对其进行排序给出(对 colB 进行排序显然没有效果):
df.sort_values(['colA','colB'], ascending=False)
>> colA colB
>> 0 0.97 0.01
>> 1 0.88 0.03
>> 2 0.03 0.87
>> 3 0.02 0.99

但是,我想仅根据较大的值进行排序,例如 > 0.5 .这将忽略 colA 的较小值并切换到 colB用于进一步排序。

排序后的 DataFrame 看起来像这样( row 23 被切换了):
df.some_function(['colA','colB'], ascending=False, condition=i>0.5)
>> colA colB
>> 0 0.97 0.01
>> 1 0.88 0.03
>> 2 0.02 0.99
>> 3 0.03 0.87

非常感谢你的帮助!

最佳答案

想法是将不匹配的值替换为缺失值,然后排序,最后按新索引更改顺序:

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

详情 :
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

关于python - 对 Pandas DataFrame 进行排序忽略某些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62017020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com