gpt4 book ai didi

python - 如何根据 df1 中的 bool 值对 df2 中的字段进行排名并创建第三个数据框?

转载 作者:太空宇宙 更新时间:2023-11-03 21:20:08 25 4
gpt4 key购买 nike

无法弄清楚如何仅对来自另一个 df 的 True bool 值进行排名。

示例:仅选择 df1 中为 True 的字段,然后在 df2 中对这些字段进行排名(True),仅保留前 2 个排名为 True 的字段,并在 df3 中将其他字段更改为 False。

df1
date x y w z
2017-02-02 True False True True
2017-02-03 False True True True


df2
date x y w z
2017-02-02 1 2 3 4
2017-02-03 2 4 1 3



expectation:

df3 (logic)
date x y ...
2017-02-02 (df1 is True and ranked 1 in df2, (df1 is False, so df3 is False)
which means top 2 -> True in df3)

2017-02-02 (df is False, so df3 is False) (df1 is True, so rank the True
in df2, which means it's ranked
3rd, so False)

Final:

df3
date x y w z
2017-02-02 True False True False
2017-02-03 False False True True

最佳答案

使用numpyargsort检查。这里最难的部分是首先排序得到不超过限制 2 的 cumsum ,然后排序回来

df1[:]=np.array([np.logical_and(x[y-1].cumsum()<=2,x[y-1])[(y-1).argsort()] for x,y in zip(df1.values,df2.values)])
df1
Out[330]:
x y w z
date
2017-02-02 True False True False
2017-02-03 False True False True

关于python - 如何根据 df1 中的 bool 值对 df2 中的字段进行排名并创建第三个数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54354742/

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