Python 删除与另一个数据帧相交处缺少的数据帧行
我有一个数据帧,例如:Python 删除与另一个数据帧相交处缺少的数据帧行,python,pandas,Python,Pandas,我有一个数据帧,例如: name value_1 ... value_n 1 a 11.5 ... 13.2 2 b 11.5 ... 17.9 3 a 10.0 ... 21.3 4 a 9.5 ... 11.1 5 b 10.0 ... 7.2 6 a 10.5 ... 3.0 我按名称分组,因此现在有两个数据帧: name
name value_1 ... value_n
1 a 11.5 ... 13.2
2 b 11.5 ... 17.9
3 a 10.0 ... 21.3
4 a 9.5 ... 11.1
5 b 10.0 ... 7.2
6 a 10.5 ... 3.0
我按名称分组,因此现在有两个数据帧:
name value_1 ... value_n
1 a 11.5 ... 13.2
3 a 10.0 ... 21.3
4 a 9.5 ... 11.1
6 a 10.5 ... 3.0
name value_1 ... value_n
2 b 11.5 ... 17.9
5 b 10.0 ... 7.2
然后,我只想保留那些值_1
在两个数据帧中的条目。我不在乎其他专栏。我的尝试:
isin
->不起作用,因为它要求所有列包含相同的数据pd.merge(group_a,group_b,how='internal',on=['value_1'])
,哪种方式有效,但结果是数据框包含合并的两行的列,例如value_n_x
和value_n_y
,这不符合我的需要df
的子集,比如:
print group_a
name value_1 value_n
1 a 11.5 13.2
3 a 10.0 21.3
3 a 10.0 21.3
4 a 9.5 1.1
6 a 10.5 3.0
print group_b
name value_1 value_n
2 b 11.5 17.9
5 b 10.0 7.2
print pd.merge(group_a[['value_1']], group_b[['value_1']], how='inner', on=['value_1'])
value_1
0 11.5
1 10.0
2 10.0
第二种解决方案的使用和配合:
但这并不能帮助我实现我的主要目标,即从inicial数据帧中删除其余的行。这只会改变我的方法,只给我值_1行,而不是中间对照中的所有行。有什么想法吗?我觉得你的aproach非常好,只是我想通过删除不必要的列来改进它。当然,我很感激,但我仍然需要获得这些结果,并以某种方式使用它们从初始数据帧中删除合并结果中不存在的条目。目前,我正在手工操作,将结果归档,但这似乎不是一种类似于蟒蛇的方式
inter = np.intersect1d(group_a['value_1'], group_b['value_1'])
print inter
[ 10. 11.5]
mask1 = group_a['value_1'].isin(inter)
mask2 = group_b['value_1'].isin(inter)
print group_a.loc[mask1]
name value_1 value_n
1 a 11.5 13.2
3 a 10.0 21.3
3 a 10.0 21.3
print group_b.loc[mask2]
name value_1 value_n
2 b 11.5 17.9
5 b 10.0 7.2