Python 如何签入多个数据帧?

Python 如何签入多个数据帧?,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据帧 import pandas as pd d={'P':['A','B','C'], 'Q':[5,6,7] } df=pd.DataFrame(data=d) print(df) d={'P':['A','C','D'], 'Q':[5,7,8] } df1=pd.DataFrame(data=d) print(df1) d={'P':['B','E','F'], 'Q':[5,7,8] } df3=pd.DataFrame(data=d) pr

我有以下数据帧

import pandas as pd
d={'P':['A','B','C'],
   'Q':[5,6,7]
  }
df=pd.DataFrame(data=d)
print(df)

d={'P':['A','C','D'],
   'Q':[5,7,8]
  }
df1=pd.DataFrame(data=d)
print(df1)

d={'P':['B','E','F'],
   'Q':[5,7,8]
  }
df3=pd.DataFrame(data=d)
print(df3)
检查另一个数据帧列中不存在的一个数据帧列的代码如下:

df.loc[~df['P'].isin(df1['P'])]
如何在多个列中检查相同内容

如何在df3中找到p列而不是df和df1的p列

预期产出:

    P   Q
0   E   7
1   F   8

对于按位
,您可以使用
链接2个条件:

cond1 = ~df3['P'].isin(df1['P'])
cond2 = ~df3['P'].isin(df['P'])
df = df3.loc[cond1 & cond2]
print (df)
   P  Q
1  E  7
2  F  8
或列的联接值-按或联接列表按
+

df = df3.loc[~df3['P'].isin(np.concatenate([df1['P'],df['P']]))]
#another solution 
#df = df3.loc[~df3['P'].isin(df1['P'].tolist() + df['P'].tolist())]

然而,耶斯雷尔已经给出了专家的答案:)

您可以简单地定义条件,然后逻辑地组合它们,如:

con1 = df3['P'].isin(df['P'])
con2 = df3['P'].isin(df1['P'])
df = df3[~ (con1 | con2)]
>>> df
   P  Q
1  E  7
2  F  8

这是一个很好的答案。然而,为了可读性,我将把条件作为变量cond1 cond2。你不这么认为吗?@AntonvBR-当然,我同意@jezrael,您已经保留了答案,但在学习过程中,我也保留了我的答案,使用条件略有不同:-P,my+1您的解决方案有效,但在我看来,您应该小心使用术语。在上下文中,什么是向量?我想你指的是布尔级数,但不确定。@jpp,是的,在这个例子中,con1和con2是向量bools@jpp,如果你想用你自己的技术解释向量,那么我可以提出一个新问题:-)你能提供熊猫文档中术语
向量的参考吗?听起来根本不像Python/Pandas术语。你有
list
np.ndarray
[array]或
pd.Series
[Series],但从来没有
vector
@jpp,我有时会用到它