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,我有时会用到它