簡體   English   中英

如何檢查多個數據幀pandas?

[英]How to check not in on multiple dataframes pandas?

我有以下數據幀。

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

您可以使用&為按位AND鏈接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

或者連接列的值 - 通過concatenate或連接列表+

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())]

怎么樣,但是jezrael已經給了專家的答案:)

您可以簡單地定義條件,然后在邏輯上將它們組合起來,例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM