You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选同时包含car和house的DataFrame行数据

筛选同时拥有'car'和'house'的人员行数据

要实现这个需求,核心是先确认哪些人员同时拥有'car'和'house'这两个var1取值,再用这些人员的名字去过滤原DataFrame。直接按var1的单个条件筛选会误留不符合要求的行,所以必须先通过分组验证人员的完整取值集合。

方法一:先筛选有效姓名,再过滤数据

import pandas as pd

# 假设你的DataFrame名为df
# 1. 分组获取每个name对应的var1集合,筛选出同时包含car和house的name
valid_names = (
    df.groupby('name')['var1']
      .agg(set)
      .filter(lambda x: {'car', 'house'}.issubset(x))
      .index.tolist()
)

# 2. 用有效姓名过滤原DataFrame
result_df = df[df['name'].isin(valid_names)]

方法二:用transform直接标记符合条件的行(更简洁)

# 给每行标记所属name是否同时拥有car和house
df['valid'] = df.groupby('name')['var1'].transform(lambda x: {'car', 'house'}.issubset(x))

# 筛选有效行并删除辅助列
result_df = df[df['valid']].drop('valid', axis=1)

运行后,result_df会只保留Jay和Ashley的所有行,完全符合你的需求。这种方法对1000条数据的处理效率也很高,不会有性能问题。

内容的提问来源于stack exchange,提问作者kluster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 10:53:20