python - 如何通过列中的分组值过滤数据框中的值

标签 python python-3.x pandas dataframe

我有一个数据框:

id    value
a1      0
a1      1
a1      2
a1      3
a2      0
a2      1
a3      0
a3      1
a3      2
a3      3

我想过滤 id,只留下那些值高于 3 的 id。因此,在此示例中,必须删除 id a2,因为它只有值 0 和 1。所以期望的结果是:

id    value
a1      0
a1      1
a1      2
a1      3
a3      0
a3      1
a3      2
a3      3
a3      4
a3      5

如何在 pandas 中做到这一点?

最佳答案

已更新。

按 ID 分组并查找其最大值。查找最大值等于或大于 3 的 ID:

keep = df.groupby('id')['value'].max() >= 3

选择 ID 匹配的行:

df[df['id'].isin(keep[keep].index)]  

关于python - 如何通过列中的分组值过滤数据框中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69260823/

相关文章:

python - Pandas read_json : "If using all scalar values, you must pass an index"

Python 3.7.5-slim-strech,安装表和hdf5错误查找hdf install

python - 如何用python脚本计算汇率

python - 按多列将 csv 文件拆分为 Pandas 数据框

python-3.x - 导入带有列分隔符 (;) 但没有 CR 或 LF 的 txt 文件,如何重写文件

python - Pandas :过滤组中的唯一值

python - 将 'hhmm' int 转换为正确的格式

python - 删除二维数组中具有相同值的行

python - 创建一个列来计算每个新行之间的差异

python-3.x - Azure 机器学习错误 : You must provide an InferenceConfig when deploying a model with model_framework set to AutoML