gpt4 book ai didi

python - 在 pandas DataFrame 中查找满足多个逻辑( bool )条件的组

转载 作者:行者123 更新时间:2023-12-02 02:22:34 25 4
gpt4 key购买 nike

我有 3 列

Level Status     Id
0 Complete a1
1 Start c1
1 Complete c1
2 Start d1
2 Start d2
2 Fail d2

我想过滤数据,其中每个级别应该只有开始和完成或开始和失败,因为两者的 id 相同

Level Status     Id
1 Start c1
1 Complete c1
2 Start d2
2 Fail d2

最佳答案

您可以使用GroupBy.transform('any')来获取与状态具有“开始”并且状态还具有{“失败”,“完成”}之一的条件相匹配的组,使用

status_has_start = df['Status'].eq('Start').groupby(df['Id']).transform('any')
status_has_complete_or_fail = (
df['Status'].isin(['Complete', 'Fail']).groupby(df['Id']).transform('any'))

print (df.loc[status_has_start & status_has_complete_or_fail])

Level Status Id
1 1 Start c1
2 1 Complete c1
4 2 Start d2
5 2 Fail d2

哪里,

print (status_has_start)

0 False
1 True
2 True
3 True
4 True
5 True
Name: Status, dtype: bool

print (status_has_complete_or_fail)

0 True
1 True
2 True
3 False
4 True
5 True
Name: Status, dtype: bool

如果你想要 1 类固醇,你可以运行

df.loc[pd.concat([df['Status'].eq('Start'), 
df['Status'].isin(['Complete', 'Fail'])], axis=1)
.groupby([df['Level'], df['Id']])
.transform('any')
.all(axis=1)]

Level Status Id
1 1 Start c1
2 1 Complete c1
4 2 Start d2
5 2 Fail d2

关于python - 在 pandas DataFrame 中查找满足多个逻辑( bool )条件的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66193238/

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