创建新列,其中来自两个不同数据帧的两列相同

时间:2019-02-28 16:25:57

标签: python pandas dataframe

我有两个数据框。

1:


   pid  cluster
7993355 0   0
8180238 0   5
8174589 0   7
8168267 0   10
8264548 0   10
8252159 0   0
8388741 0   6
8346358 0   2
8194226 0   8
8187866 0   3
8133728 0   1
8215624 0   6
8124250 0   0
8382996 0   5
8151852 0   0
8130044 0   2
8017035 0   5
8108438 0   0
8245152 0   1
8047538 0   3
8070691 0   7
8344660 0   5
8148647 0   6
8157608 0   10
8352127 0   8

2:


pid cluster count
0   0   0   8
1   0   1   2
2   0   2   3
3   0   3   2
4   0   4   1
5   0   5   5
6   0   6   4
7   0   7   3
8   0   8   4
9   0   10  3

我的目标是在pid和cluster相同的情况下将这两个数据帧连接起来,例如,如果pid和cluster均为0,我希望下一个数据帧的计数值为8。 我想自主地做到这一点。 我尝试使用功能:train['count'] = np.where(((sample['pid'] == train['pid'])&(sample['cluster']==train['cluster'])), sample['count'], 0),但是它不起作用。 Pd.Merge等将无法正常工作,因为两者的尺寸都不同。我只提供了一小段数据框。 任何帮助,将不胜感激!

1 个答案:

答案 0 :(得分:2)

尝试

df2[df2['pid'].isin(pd.unique(df1['pid'])) & df2['count'].isin(pd.unique(df1['count'])) ]