如何将多维数据帧作为联合添加到另一个多维数据帧?

2024-09-29 06:26:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧:

主数据帧A:

   A  B
0  1  0
1  1  0

第二个数据帧B:

   A  B
0  0  1
1  1  0

第三数据帧C:

   A  B  C
0  1  0  0
1  0  1  1
2  0  0  1

在python中,我想添加A、B和Cthem,这样生成的数据帧D的结构由与主数据帧A相同的列和行结构组成,同时添加行/列的值

A+B+C

   A  B 
0  2  1 
1  2  1 

关于并集加法,我的意思是如果值>;1,定为1。那么决赛 A+B+C是:

   A  B 
0  1  1 
1  1  1 

如您所见,在添加公共行和列中的值的同时,第一个数据帧的结构得到了维护。公共行和列是可变的,所以我需要一个代码来自动检测公共行和列。你知道怎么做吗

更新

请注意,数据帧可以是多维的: 例如:

A

      A  B 
0  a  2  1 
1  a  2  1 

C级

      A  B  C
0  a  1  0  0
0  b  1  0  0
0  b  1  0  0
1  a  0  1  1
2  c  0  0  1

在这种情况下,我期望:A+C是:

      A  B 
0  a  3  1 
1  a  2  2

从而保持主数据帧A的结构。然后“二值化”为

      A  B 
0  a  1  1 
1  a  1  1

Tags: 数据代码gt情况结构行和列自动检测决赛
3条回答

这取决于你的结构会概括多少

In [50]: df_a | df_b | df_c.loc[df_a.index, df_a.columns]
Out[50]:
   A  B
0  1  1
1  1  1
((dfA+dfB+dfC).reindex(index=dfA.index,columns=dfA.columns)>=1).astype(int)
Out[252]: 
   A  B
0  1  1
1  1  1

更新时间:

(A+C).reindex(A.index,columns=A.columns)
Out[297]: 
       A    B
0 a  3.0  1.0
1 a  2.0  2.0

IIUC公司:

In [56]: (d1 + d2 + d3).dropna(how='all').dropna(axis=1, how='all').ne(0).astype(np.int8)
Out[56]:
   A  B
0  1  1
1  1  1

更新:

In [129]: idx = A.index.intersection(C.index)

In [131]: (A.loc[idx] | B.loc[idx, A.columns]).gt(0).astype('int8')
Out[131]:
     A  B
0 a  1  1
1 a  1  1

相关问题 更多 >