簡體   English   中英

大熊貓內在的條件

[英]where condition with inner join in pandas

我想在熊貓中實現以下sql等效項-

SELECT 
    A.col1,
    A.col2,
    A.col3,
    A.col4,
    A.col5
FROM Table1 A
INNER JOIN Table1 b
ON   A.col1  = B.col1 AND
     A.col2  = B.col2
WHERE 
    (A.col3 <> 0) AND   
    (A.col4 <> B.col4) 

我能夠實現的熊貓部分是-

#Dataframe dfTable1All contains the columns col1, col2, col3, col4, col5
#Dataframe dfTable1 contains the columns col1, col2, col4

dfTable1All = dfTable1All [(dfTable1All ['col3'] <> 0)]

dfjoin = pd.merge(dfTable1All, dfTable1, on=('col1','col2'), how='inner')

您能幫我如何使用帶內連接的where條件嗎?

WHERE (A.col4 <> B.col4)

謝謝。

如果您查看merge文檔字符串,則在具有相同名稱的列上有后綴選項。 默認'_x''_y' 因此,要過濾兩個col4不相等的位置,可以執行以下操作:

dfjoin = dfjoin[dfjoin['col4_x'] != dfjoin['col4_y']]

我將其分解為單獨的操作

dfA.set_index(['col1', 'col2'], inplace=True)
dfB.set_index(['col1', 'col2'], inplace=True)

dfAB = dfA.join(dfB, rsuffix='_A', lsuffix='_B')

dfAB.query("col3_A != 0 and col4_A != col4_B")

暫無
暫無

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

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