2015-12-02 73 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 –