【发布时间】:2016-11-13 10:38:48
【问题描述】:
例如,我有两个数据框,其中包含一些相同的样本名称和不同的特征数据。
我想比较两个数据框中存在多少样本。
这里有数据
一个虚拟的方法来解决这个问题,我虽然有:
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
虽然这个循环过程可能会浪费很多时间。有什么简单的技术可以解决吗?
此外,如何提取具有相同 sample_name 的每个数据帧的子集,并将它们的特征数据连接到一个新的数据帧中。
我已经尝试过 pd.concat(df1, df2, keys = 'Sample_name')
【问题讨论】:
-
是否可以共享您的数据?
-
在一个共享列上组合两个dfs称为
join -
使用
df1.Sample_name.isin(df2.Sample_name).sum()应该可以有效地工作。 -
你想要行交集的大小还是 DataFrames 上的点击总数?例如,帧
df1 = df2 = pd.DataFrame({'a': [1, 1, 1]})应该产生 3 还是 9?如果是后一种情况,我想你想要 Divakar 的答案。
标签: python performance python-2.7 pandas join