2015-12-02 72 views
0

我有兩個數據幀,我已經連接成一個。我最終想要結束的是列表中存在的所有列。數據幀來自兩個不同的數據庫表,我需要根據兩個表中存在的數據生成查詢。比較數據幀中的列

我試着做以下操作:concat_per.query('doe_per==focus_per')但它返回一個空的數據框。

 doe_per focus_per 
2   NaN Period_02 
3 Period_01 Period_06 
4 Period_02 Period_08 
5 Period_03  NaN 
6 Period_04  NaN 
7 Period_05  NaN 
8 Period_06  NaN 
9 Period_07  NaN 
10 Period_08  NaN 
+0

你問問列名是否存在於兩個dfs中,或者值是否存在於2個dfs中的2個不同列之間?你的問題和輸出相互矛盾 – EdChum

回答

1

也可以使用函數isin()。 首先,您可以將第一列轉換爲基於列的列或列表。然後使用isin()過濾第二個數據幀。

firstList = set(df1st.doe_per) 
    targetDF = df2nd[df2nd.focus_per.isin(firstList)==True] 

如果你想兩個dataframes合併成一個,你可以使用

pd.merge(df1,df2,left_on=df1st.doe_per,right_on = df2nd.focus_per,join='inner') 

pd.concat([df1,df2],on_,join='inner',ignore_index=True) 

我很抱歉,我忘了在function.But如果有些PARAMS你想要將一些數據框合併成一個,你需要使用這兩個函數。也許pd.combine()可以。你可以查看大熊貓的api。

+0

這工作得很好!謝謝! – Mysteri0n

+0

不客氣。很高興在這裏:D –