问题
当查询的列有多个值时,如何检查一列中的值是否在另一列中?
最小可重复示例
df1 = pd.DataFrame({'patient': ['patient1', 'patient1', 'patient1','patient2', 'patient2', 'patient3','patient3','patient4'],
'gene':['TYR','TYR','TYR','TYR','TYR','TYR','TYR','TYR'],
'variant': ['buu', 'luu', 'stm','lol', 'bla', 'buu', 'lol','buu'],
'genotype': ['buu,luu,hola', 'gulu,melon', 'melon,stm','melon,buu,lol', 'bla', 'het', 'het','het']})
print(df1)
patient gene variant genotype
0 patient1 TYR buu buu,luu,hola
1 patient1 TYR luu gulu,melon
2 patient1 TYR stm melon,stm
3 patient2 TYR lol melon,buu,lol
4 patient2 TYR bla bla
5 patient3 TYR buu het
6 patient3 TYR lol het
7 patient4 TYR buu het
我所尝试的
df1.variant.isin(df1.genotype)
0 False
1 False
2 False
3 False
4 True
5 False
6 False
7 False
Name: variant, dtype: bool
这不起作用。预期结果将是:
0 True
1 False
2 True
3 True
4 True
5 False
6 False
7 False
Name: variant, dtype: bool
我不知道列基因型有多少个不同的值。从1到20变化很大
3条答案
按热度按时间3df52oht1#
可以使用
DataFrame.apply
+str.split
:图纸:
qlvxas9a2#
使用 listcomp:
输出:
093gszye3#
您需要创建一个简单的
function
并使用apply
遍历所有行。触发器:
结果:
7错误