如果我使用 pandas 为同一项目同时具有 True 和 False 行,则获取 True 行。

共4个回答, 标签: python pandas pandas-groupby

我有一个数据框与这些数据。

将熊猫作为 pd 导入

Data = {'item': ['2','1','2'],
“可用”: [“真” 、 “假”]}
Df = pd.DataFrame (数据)
================================

项目 | 可用
---------------------
2 | 真
1 | False
2 | 假

在数据帧中,我有如上所示的数据。正如你所看到的,我对项目 2 既有真也有假。在这种情况下,我想要一个只有真的记录。

预期输出:

项目 | 可用
---------------------
2 | 真
1 | False

请帮助编写使用 python pandas 的条件。

谢谢

第1个答案
    I think you need first replace strings True and False to boolean if necessary and then get first row with True per groups by DataFrameGroupBy.idxmax for indices and selecting by DataFrame.loc:
Df ['isavailable'] = df ['isavailable']。地图 ({'True': True,'False': False})

Df = df.loc [df.groupby ('item',sort = False) ['isavailable'].idxmax ()]
打印 (df)
项目可用
0 2 真
1 1 假
第2个答案
第3个答案
    Since bool is also kind of int:
Df = df.Sort _ values ('isavailable').drop_duplicates (子集 = ['item'],keep = 'last')

当然,这将会重新订购你的物品。

第4个答案
    Here is a solution where we check if the value True is one of the values assigned to each item.  If so, the outcome is also True.
> Df.groupby (['item']) ['isavailable'].apply (λ x: x 中的 True)
项目
1 真
2 假
名称: IsAvailable,dtype: bool

如果要保留列名,请使用

> Df.groupby (['item']) ['isavailable']。应用 (λ x: x 中的 True)。reset _ index ()
项目可用
0 1 真
1 2 假

相关问题

通过随机抽样其他列数据创建新列 如何使用熊猫获得包括每一个组合的计数 如何有效地展开矩阵的值与小块? 如何破坏 Python 对象并释放内存 将具有特殊格式的文本文档转换为熊猫数据框架 用两本字典绘制一只熊猫专栏图 根据给定条件过滤数据框并添加新列 动态列名的 Pandas 聚合 如果我使用 pandas 为同一项目同时具有 True 和 False 行,则获取 True 行。