例如,我有两个数据框,其中包含一些具有不同要素数据的相同样本名称。
我想比较两个数据帧中存在多少个样本。
我实现这个问题的一种虚拟方法:
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')
答案 0 :(得分:2)
以下是使用NumPy broadcasting
获取hit
值的矢量化方法 -
np.count_nonzero(df1.Sample_name.values[:,None] == df2.Sample_name.values)
答案 1 :(得分:1)
您应该通过标识列将您的表格加入index
,然后使用pandas.DataFrame.apply
应用现在列属性之间的比较。