Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas-在比较时从字典中获取相应的值_Python_Pandas - Fatal编程技术网

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?谢谢。我在尝试应用概念。忘了地图。再次感谢。