如何修改代码让下拉框展示两个DataFrame共有的Opp名称?
解决方法
修改后的代码如下:
[{'label': i, 'value': i} for i in sorted(dff[dff.Opp.isin(df2['Name'])]['Opp'].unique())]
问题分析
你原来的代码dff.Opp.isin(df2['Name'])返回的是布尔值序列(每个元素对应dff中Opp列的值是否存在于df2的Name列),后续调用.unique()得到的就是[True, False]这两个值,所以下拉框才会显示这两个选项。
修改逻辑
- 先用
dff.Opp.isin(df2['Name'])作为筛选条件,从dff中提取出Opp列值存在于df2 Name列的行 - 从筛选后的结果中取出Opp列,再调用
.unique()得到所有共有的唯一值 - 最后对这些值排序,生成下拉框需要的
label和value结构
验证结果
结合你给出的DataFrame示例,修改后的代码会生成:
[{'label': 'Test2', 'value': 'Test2'}, {'label': 'Test4', 'value': 'Test4'}]
完全符合你预期的下拉框选项。
内容的提问来源于stack exchange,提问作者Devin Smith
相关产品推荐
相关产品推荐

