pd.merge 并检查更改的数据

如果我有这些数据框


df1 = pd.DataFrame({'index': [1,2,3,4],

                    'col1': ['a','b','c','d'],

                   'col2': ['h','e','l','p']})

df2 = pd.DataFrame({'index': [1,2,3,4],

                    'col1': ['a','e','f','d'],

                   'col2': ['h','e','lp','p']})

df1


   index col1 col2

0      1    a    h

1      2    b    e

2      3    c    l

3      4    d    p

df2


   index col1 col2

0      1    a    h

1      2    e    e

2      3    f   lp

3      4    d    p

我想合并它们并查看行是否不同并得到这样的输出


   index col1  col1_validation col2  col2_validation

0      1    a             True    h             True

1      2    b            False    e             True

2      3    c            False    l            False

3      4    d             True    p             True

我怎样才能做到这一点?


梦里花落0921
浏览 95回答 2
2回答

犯罪嫌疑人X

看起来col1和col2您的“合并”数据框只是取自df1. 在这种情况下,您可以简单地比较原始数据帧之间的 , 并将它们添加为列col1:col2cols = ["col1", "col2"]val_cols = ["col1_validation", "col2_validation"]# (optional) new dataframe, so you don't mutate df1 df = df1.copy()new_cols = (df1[cols] == df2[cols])df[val_cols] = new_cols    

泛舟湖上清波郎朗

您可以使用类似于以下内容的方式合并和比较两个数据框:df1 = pd.DataFrame({'index': [1,2,3,4],                    'col1': ['a','b','c','d'],                   'col2': ['h','e','l','p']})df2 = pd.DataFrame({'index': [1,2,3,4],                    'col1': ['a','e','f','d'],                   'col2': ['h','e','lp','p']})# give columns unique name when mergingdf1.columns = df1.columns + '_df1'   df2.columns = df2.columns + '_df2' # merge/combine data framescombined = pd.concat([df1, df2], axis = 1)# add calculated columnscombined['col1_validation'] = combined['col1_df1'] == combined['col1_df2']combined['col12validation'] = combined['col2_df1'] == combined['col2_df2'] 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python