使用python熊猫选择组中的特定值



我有一个包含以下数据的数据集。

id status div
1  True    0
2  False   2
2  True    1
3  False   4
3  False   5
1  False   5
4  True    3
4  True    10
5  False   3
5  False   3
5  True    2

我希望我的输出为

id status  div
1  True    0
2  True    1
3  False   4
4  True    3
5  True    2

如果组中存在真,我希望它是真的,否则如果只有假存在,我想成为假。

我尝试使用熊猫组,但无法选择条件。

DataFrameGroupBy.any与帮助程序map一起使用,Series每个组的第一行True行(如果存在):

s = (df.sort_values(['status','id'], ascending=False)
.drop_duplicates('id')
.set_index('id')['div'])
print (s)
id
5    2
4    3
2    1
1    0
3    4
Name: div, dtype: int64
df1 = df.groupby('id')['status'].any().reset_index()
df1['div'] = df1['id'].map(s)
print (df1)
id  status  div
0   1    True    0
1   2    True    1
2   3   False    4
3   4    True    3
4   5    True    2

最新更新