比较数据帧中的2个数据帧

时间:2018-02-22 11:57:07

标签: python pandas dataframe

作为数据比较项目的一部分。我有两个DF合并了

DF1:

A B C

a1 t8 u7

d5 g6 e5

c3 s3 s6

DF2:

A B C

q8 e6 d3

g4 s1 d0

s2 w3 r3

合并数据框df3

A B C A B C

a1 t8 u7 q8 e6 d3

d5 g6 e5 g4 s1 d0

c3 s3 s6 s2 w3 r3

并希望将它们与新列并排比较为“差异”

A差异B B差异C C差异

a1 q8 FALSE t8 e6 FALSE u7 d3 FALSE

d5 g4 FALSE g6 s1 FALSE e5 d0 FALSE

c3 s2 FALSE s3 w3 FALSE s6 r3 FALSE

请协助比较上述格式的df3中的值

1 个答案:

答案 0 :(得分:2)

我认为在pandas中最好避免重复的列名,所以建议这个解决方案:

  • concat DataFrames使用布尔df,使用参数keys作为MultiIndex
  • sort_index
  • 按第二级列排序
  • 如果有必要MultiIndexmap
  • 展平
df = (pd.concat([df1, df2, df1 == df2], axis=1, keys=('a','b', 'diff'))
        .sort_index(axis=1, level=1))
df.columns = df.columns.map('_'.join)
print (df)

  a_A b_A  diff_A a_B b_B  diff_B a_C b_C  diff_C
0  a1  q8   False  t8  e6   False  u7  d3   False
1  d5  g4   False  g6  s1   False  e5  d0   False
2  c3  s2   False  s3  w3   False  s6  r3   False