最有效的方法来组合具有相同列值的pandas DataFrame

时间:2016-11-13 10:38:48

标签: python performance python-2.7 pandas join

例如,我有两个数据框,其中包含一些具有不同要素数据的相同样本名称。

我想比较两个数据帧中存在多少个样本。

数据

df1 df2

我实现这个问题的一种虚拟方法:

hit = 0
for i in range(0,len(df1),1):
    for j in range(0,len(df2),1):
        if df1.Sample_name.iloc[i] == df2.Sample_name.iloc[j]:
           hit+=1

我这个循环程序可能会浪费很多时间。是否有任何简单的技术可以随身携带?

此外,如何使用idential sample_name提取每个数据帧的子集,并将它们的要素数据连接到一个新的数据帧中。

我试过pd.concat(df1,df2,keys ='Sample_name')

2 个答案:

答案 0 :(得分:2)

以下是使用NumPy broadcasting获取hit值的矢量化方法 -

np.count_nonzero(df1.Sample_name.values[:,None] == df2.Sample_name.values)

答案 1 :(得分:1)

您应该通过标识列将您的表格加入index,然后使用pandas.DataFrame.apply应用现在列属性之间的比较。