【发布时间】:2021-06-29 00:00:08
【问题描述】:
免责声明:我尝试在 SQL 中执行此操作,但没有一个答案/我的尝试奏效,所以我一直在尝试使用 python,因为它似乎更适合
我希望创建一个函数,如果其中任何一个符合特定条件,则可以删除组中的所有项目。
具体来说,我有一个数据集“家庭”,如果该家庭包含双胞胎,我想删除该家庭的所有成员。
数据集的一部分如下所示:
| Subject ID | Mother_ID | Zygosity_SR |
|---|---|---|
| 1001 | 2001 | MZ |
| 1002 | 2001 | MZ |
| 1003 | 2001 | NotTwin |
| 1004 | 2002 | NotTwin |
| 1005 | 2002 | NotTwin |
在这种情况下,我想删除所有具有与 Zygosity_SR = MZ 的主题相同 Mother_ID 的个人的行。
我的结果表如下所示:
| Subject ID | Mother_ID | Zygosity_SR |
|---|---|---|
| 1004 | 2002 | NotTwin |
| 1005 | 2002 | NotTwin |
这是我的python代码:
import pandas as pd
family = pd.read_excel('HCP database 97 excel vers.xlsx')
family_drop = family.groupby('Mother_ID').filter(lambda x: x['ZygositySR'].str.strip() == 'MZ' )
family_drop.reset_index(drop=True, inplace=True)
family_drop = family_drop[['Subject','Mother_ID']]
print(family_drop)
我收到了错误:
TypeError: filter function returned a Series, but expected a scalar bool
任何有关如何解决此问题的提示将不胜感激。非常感谢!
【问题讨论】:
-
我们如何识别双胞胎?如果
Zygosity_SR中有重复,我们认为它是双胞胎?原始数据中没有任何内容表明MZ行是双胞胎。要概括解决方案,请分享其他信息。否则,它将是价值MZ的定制解决方案@
标签: python pandas conditional-statements pandas-groupby