Python 如何比较同一数据帧的两列中的值并将结果输出到新表中

Python 如何比较同一数据帧的两列中的值并将结果输出到新表中,python,pandas,dataframe,difference,Python,Pandas,Dataframe,Difference,我目前正在使用pandas和Python3.6.5开发一个拥有300多万行和200列的大型数据库 该数据库的两列包含评级(低、中低、中高和高),我想比较并突出它们的差异 以下是我的数据示例: >>> df ID RATING_A RATING_B 0 AAA0001 LOW LOW 1 AAA0002 LOW MEDIUM-LOW 2 AAA0003 MEDIUM-LOW

我目前正在使用pandas和Python3.6.5开发一个拥有300多万行和200列的大型数据库

该数据库的两列包含评级(低、中低、中高和高),我想比较并突出它们的差异

以下是我的数据示例:

>>> df
        ID     RATING_A     RATING_B
0  AAA0001          LOW          LOW
1  AAA0002          LOW   MEDIUM-LOW
2  AAA0003   MEDIUM-LOW          LOW
3  AAA0004  MEDIUM-HIGH         HIGH
4  AAA0005         HIGH  MEDIUM-HIGH
我想在某种透视表中输出差异,这样我可以准确地识别差异并计算它们。我在寻找全局,我并不特别希望数据库中的ID具有不同的评级

我想到了这种输出:

>>> df2
      RATING A   B_LOW   B_MEDIUM-LOW   B_MEDIUM-HIGH   B_HIGH
0          LOW       x              x               x        x
1   MEDIUM-LOW       x              x               x        x
2  MEDIUM-HIGH       x              x               x        x
3         HIGH       x              x               x        x
我一直在考虑如何到达那里,但我想到的唯一解决办法是一个好的古老的“如果森林”,这将是痛苦的写作,不是很有效

例如:

>>> for row in df.itertuples():
...     if row.RATING_A == "LOW" and row.RATING_B == "LOW":
...             df2.loc[0, 'B_LOW'] += 1
...     elif row.RATING_A == "LOW" and row.RATING_B == "MEDIUM-LOW":
...             df2.loc[0, 'B_MEDIUM-LOW']
(...)

有没有办法使用pandas或其他python库更有效地解决这个问题?

您是否直接尝试过pivot()?也就是说,我想象你可以在“RATING_a”上使用groupby操作来获得计数,然后使用pivot来获得你所追求的结构