如何用isin()筛选并打印DataFrame中ID匹配的字符串列?
解决思路
我来帮你梳理下具体的解决步骤,你当前的代码只是生成了ID是否匹配的布尔序列,但还没用到这个序列去筛选data1里的目标列,所以才只得到了布尔值结果。
1. 先筛选出data1中ID同时存在于data2的行
首先我们需要用布尔索引,把data1里id出现在data2['id']中的行筛选出来:
# 筛选符合条件的data1行 filtered_rows = data1[data1['id'].isin(data2['id'])]
2. 提取并打印目标字符串列
假设你想要打印的是data1中的某一列(比如如果是user_id,就替换成你实际需要的列名),直接提取该列并打印即可:
# 替换成你需要的列名,比如'user_id' print(filtered_rows['user_id'].to_string())
简化写法(合并成一行)
如果想更简洁,也可以把两步合并成一行:
print(data1[data1['id'].isin(data2['id'])]['user_id'].to_string())
额外补充:如果需要关联data2的字符串列(比如title)
如果你想要的是对应ID的data2中的字符串列(比如title),可以用merge做内连接,只保留两边都存在的ID对应的行:
import pandas as pd # 内连接,只保留共同ID的行,提取需要的列 merged_result = pd.merge(data1[['id']], data2[['id', 'title']], on='id', how='inner') # 打印data2的title列 print(merged_result['title'].to_string())
用你给出的示例数据测试的话,假设data2里的ID包含242、302、377,那么第一个方法会打印data1对应的user_id:196、186、22;第二个方法会打印这些ID对应的data2中的电影标题。
内容的提问来源于stack exchange,提问作者user1582859
相关产品推荐
相关产品推荐

