gpt4 book ai didi

python - 删除与另一个数据帧交叉处丢失的数据帧行

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:47 24 4
gpt4 key购买 nike

我有一个数据框,例如:

    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

然后,我只想保留 value_1 在两个数据帧中的条目。我不关心其他专栏。我的尝试:

  1. 使用 isin -> 不起作用,因为它要求所有列包含相同的数据
  2. 交集:pd.merge(group_a, group_b, how='inner', on=['value_1']),这种方法有效,但结果是数据帧包含两者的列行合并,例如 value_n_xvalue_n_y,这不符合我的需求

还有其他想法吗?

最佳答案

我想你可以尝试merge两个 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

第二种解决方案使用numpy.intersect1dlocisin :

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

关于python - 删除与另一个数据帧交叉处丢失的数据帧行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35512425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com