Python Pandas-在比较时从字典中获取相应的值
我有一本这样的字典(不是数据框)Python Pandas-在比较时从字典中获取相应的值,python,pandas,Python,Pandas,我有一本这样的字典(不是数据框) Emp ID dictvalue 1 True 2 False Emp ID ColA ColB 1 A B 2 A A 我有一个这样的数据框 Emp ID dictvalue 1 True 2 False Emp ID ColA ColB 1
Emp ID dictvalue
1 True
2 False
Emp ID ColA ColB
1 A B
2 A A
我有一个这样的数据框
Emp ID dictvalue
1 True
2 False
Emp ID ColA ColB
1 A B
2 A A
我正在比较可乐和可乐
temp_result_df[res_col_name] = (temp_result_df[primaryreportreqcolname] == temp_result_df[RequiredSecondaryReport_Col_Name])
我在代码中寻找or逻辑,它将通过映射empid从字典中获取dictvalue(布尔值true或false)。
如果为了便于维护,它位于同一行代码上,对我来说会容易得多
大概
temp_result_df[res_col_name] = (temp_result_df[primaryreportreqcolname] == temp_result_df[RequiredSecondaryReport_Col_Name]) | ??...dictvalue......??
此时,我不想将dict作为新列添加到此temp_result_df中。
将字典转换为数据帧并进行连接将是一个简单的解决方案。但是,我将不得不再次删除该列,并且下一个操作将变得更加混乱,因为这在多个地方都存在
预期结果,
Emp ID ColA ColB result
1 A B True
2 A A True
Emp ID 1在比较ColA和ColB时返回False,但在OR逻辑与来自数据帧的dictvalue进行比较时,它变为True。使用按位链接或
:
d = {1:True, 2:False}
df['result'] = (df['ColA'] == df['ColB']) | df['Emp ID'].map(d)
print (df)
Emp ID ColA ColB result
0 1 A B True
1 2 A A True
详细信息:
print (df['ColA'] == df['ColB'])
0 False
1 True
dtype: bool
print (df['Emp ID'].map(d))
0 True
1 False
Name: Emp ID, dtype: bool
好。加入将是最简单的解决方案。但在数据帧中执行的操作会受到影响。除非我再次删除该专栏。你能澄清一下你的预期结果吗。为什么两行在结果列中都有'true'?是的,Emp Id 1在比较ColA和ColB时给出了False的结果。但它变成了真的,因为字典的dictvalue有一个OR逻辑。@Hari_Sheldon现在完成了。谢谢。对不起,还有一个,字典不会包含数据框中的所有ID?谢谢。我在尝试应用概念。忘了地图。再次感谢。