gpt4 book ai didi

python - 选择数据框中的公共(public)元素 Python

转载 作者:行者123 更新时间:2023-11-28 21:36:15 25 4
gpt4 key购买 nike

我有 3 个 DF,我想找到具有共同方向的所有单元格(即跨 DF 始终为正或始终为负):

test=pd.DataFrame([[0,1,0,3],
[-1,3,0,2],
[2,1.5,-3,1]],
columns=['a','b','c','d']
)
test2=pd.DataFrame([[1,1,0,2],
[1,-3,0,1],
[2,1.5,-2,1]],
columns=['a','b','c','d']
)
test3=pd.DataFrame([[1,2,0,2],
[1,-2,0,1],
[2,1.5,-2,1]],
columns=['a','b','c','d']
)

结果应该是 3 个数据框,其中不一致的元素显示 NA。例如,对于 test1 它将是:

test=pd.DataFrame([[NA,1,NA,3],
[NA,NA,NA,2],
[2,1.5,-3,1]],
columns=['a','b','c','d']
)

请注意,不考虑 0(即导致 NA)。我可以逐个单元地执行此操作,但我想知道这是否可以在一次整个数据帧?

我试图做((test>0)&(test1>0)&(test2>0)),这有效,但我无法将其与底片合并。

提前非常感谢

最佳答案

一种稍微不同的方法 - 您可以将底层数组堆叠在一起,使用 np.sign,然后对添加的维度求和并减少以生成 df.where 的掩码>。

In [58]: m, n = test.shape

In [59]: signs = np.sign(np.dstack((test, test2, test3)))

In [60]: mask = np.abs(np.sum(signs, -1)) == m

In [61]: test.where(mask)
Out[61]:
a b c d
0 NaN 1.0 NaN 3
1 NaN NaN NaN 2
2 2.0 1.5 -3.0 1

关于python - 选择数据框中的公共(public)元素 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51341934/

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