gpt4 book ai didi

python - 如何将 3 个相同维度的数据帧相交并输出至少 2 个数据帧中常见的数据帧

转载 作者:行者123 更新时间:2023-12-02 18:21:24 24 4
gpt4 key购买 nike

我有三个相同尺寸的数据框。我想在 3 个数据帧中的至少 2 个中找到常见的情况(1 和 -1)。我想要一个相同维度的输出数据帧,其中元素至少位于两个数据帧中。

我写了下面的例子,方便大家理解这个问题。在示例中,我想查找至少两个数据帧中哪些位置有 1 或 -1。

import pandas as pd

A= {'a': [0, '.', 0, -1],'b': [0, '.', 1, 0], 'c':[1,'.', 0, 1] }
A = pd.DataFrame(data=A)

a b c
0 0 0 1
1 . . .
2 0 1 0
3 -1 0 1

B= {'a': [0, '.', 0, -1],'b': [1, '.', 1, 0], 'c':[1,'.', 0, -1] }
B = pd.DataFrame(data=B)

B
a b c
0 0 1 1
1 . . .
2 0 1 0
3 -1 0 -1

C = {'a': [0, '.', 0, 0],'b': [1, '.', 1, 0], 'c':[0,'.', 0, 0] }
C = pd.DataFrame(data=C)

C
a b c
0 0 1 0
1 . . .
2 0 1 0
3 0 0 0

期望的输出是:

    a  b  c
0 0 1 1
1 . . .
2 0 1 0
3 -1 0 0

因此,如果存在多个 1 或多个 -1,则输出数据帧中的结果分别为 1 或 -1。如果只有一个 1 或 -1,则输出数据帧中的结果为 0。

我保留了原始数据框中的点,但它们对于问题来说无关紧要,因为它们在所有三个数据框中都是相同的。

我尝试了一些方法,但没有一个起作用。

如果有任何帮助,我将不胜感激。

非常感谢!

最佳答案

您可以使用底层 numpy 数组来计算每个值的值,并使用 numpy.select 来映射任意数量的选择。 For 在这里独立处理,但也可以添加为要检查的值。

dfs = [A,B,C]
vals = [1, -1]

masks = [sum(x.eq(val).astype(int) for x in dfs).ge(2)
for val in vals]

pd.DataFrame(np.select(masks, vals),
columns=A.columns, index=A.index).mask(A.eq('.'), '.')

输出:

    a  b  c
0 0 1 1
1 . . .
2 0 1 0
3 -1 0 0

点按 1/-1 处理:

dfs = [A,B,C]
vals = ['.', 1, -1]
masks = [sum(x.eq(val).astype(int) for x in dfs).ge(2)
for val in vals]
pd.DataFrame(np.select(masks, vals),
columns=A.columns, index=A.index)

关于python - 如何将 3 个相同维度的数据帧相交并输出至少 2 个数据帧中常见的数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70838347/

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