我有一个数据帧df1,有两列'ids'和'names'-
ids names
fhj56 abc
ty67s pqr
yu34o xyz
我有另一个数据帧df2,它有一些列-
^{pr2}$我的结果应该告诉我那些来自df2的用户,他们的值至少包含df1中的一个id,并告诉哪些id负责将它们放入结果表中。结果应该是-
user values_responsible names
1 ['fhj56'] ['abc']
3 ['fhj56','ty67s'] ['abc','pqr']
用户2不在结果表中,因为它的值在df1中都不存在。在
我试着按如下方式做-
df2.query('values in @df1.ids')
但这似乎不太管用。在
我将重构您的第二个数据帧(本质上,规范化您的数据库)。有点像
然后,只需合并id列上的第一个和第二个数据帧。在
^{pr2}$您可以排除某些id没有匹配名称的任何gid。在
其中
r[r['names'] == None][gid].unique()
查找所有没有名称的gid,然后r[~r[gid].isin( ... )]
只获取不在isin
的列表参数中的条目。在如果有更多的id组,第二个表可能看起来像
相当于
您可以遍历这些行,然后使用}从{}中查找匹配的行。我把这个经过过滤的数据帧转换成了字典
.loc
和{或者,对于整洁的数据:
^{pr2}$试试这个,使用unnest a list cell的思想。在
相关问题 更多 >
编程相关推荐