gpt4 book ai didi

python:如果符合条件(字符串比较),如何删除组中的所有项目?

转载 作者:行者123 更新时间:2023-12-05 04:51:27 25 4
gpt4 key购买 nike

免责声明:我尝试在 SQL 中执行此操作,但没有一个答案/我的尝试奏效,所以我一直在尝试使用 python,因为它似乎更适合

我希望创建一个函数,如果其中任何一项符合特定条件,则可以删除组中的所有项目。

具体来说,我有一个数据集“家庭”,如果该家庭包含双胞胎,我想删除该家庭的所有成员。

数据集的一部分如下所示:

<表类="s-表"><头>主题IDMother_IDZygosity_SR<正文>10012001MZ10022001MZ10032001不是双胞胎10042002不是双胞胎10052002不是双胞胎

在这种情况下,我想删除与 Zygosity_SR = MZ 的受试者具有相同 Mother_ID 的个体的所有行。

我的结果表如下所示:

<表类="s-表"><头>主题IDMother_IDZygosity_SR<正文>10042002不是双胞胎10052002不是双胞胎

这是我的 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

任何有关如何解决此问题的提示都将不胜感激。非常感谢!

最佳答案

DataFrameGroupBy.filter()想要一个 bool 值来确定是否应返回给定的组。

在这种情况下,看起来您正在尝试获取“所有 Zygosity_SR 值都不是 MZ”的组:

family.groupby('Mother_ID').filter(
lambda group: all(group.Zygosity_SR.str.strip() != 'MZ'))

# Subject ID Mother_ID Zygosity_SR
# 3 1004 2002 NotTwin
# 4 1005 2002 NotTwin

关于python:如果符合条件(字符串比较),如何删除组中的所有项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66913804/

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