在R语言中如何移除DataFrame中含另一DataFrame无对应值的行?
过滤包含无效用户的DataFrame行
需求说明
我有两个DataFrame:df_description和df_users。df_description包含一列名为users的字段,df_users则包含user_1和user_2两列。需要保留df_users中**两列值都存在于df_description['users']**的行,若某行任一值不在df_description的users列中,则移除该行。
示例输入
df_description
| users |
|---|
| Adam |
| Micheal |
| George |
对应创建代码:
import pandas as pd df_description = pd.DataFrame({'users': ['Adam', 'Micheal', 'George']})
df_users
| user_1 | user_2 |
|---|---|
| Adam | George |
| Adam | Micheal |
| George | Elizabeth |
对应创建代码:
df_users = pd.DataFrame({ 'user_1': ['Adam', 'Adam', 'George'], 'user_2': ['George', 'Micheal', 'Elizabeth'] })
实现方案
- 提取有效用户集合(集合查询效率更高):
valid_users = set(df_description['users'])
- 过滤
df_users,仅保留双列值都属于有效用户的行:
filtered_df = df_users[ df_users['user_1'].isin(valid_users) & df_users['user_2'].isin(valid_users) ]
示例输出
过滤后的df_users
| user_1 | user_2 |
|---|---|
| Adam | George |
| Adam | Micheal |
运行代码后打印结果:
print(filtered_df) # 输出: # user_1 user_2 # 0 Adam George # 1 Adam Micheal
内容的提问来源于stack exchange,提问作者AneesBaqir
相关产品推荐
相关产品推荐

