在python中比较两个数据帧中的行时的if语句

在python中比较两个数据帧中的行时的if语句,python,pandas,dataframe,if-statement,match,Python,Pandas,Dataframe,If Statement,Match,我有两个数据帧data2和data3: data0 = { 'state': ['CA', 'CA', 'OH'], 'year': [2012, 2014, 2010], 's': [2000, 4000, 5000] } data1=pd.DataFrame(data0) data2 = { 'state': ['CA', 'CA', 'OH'], 'year': [2012, 2014, 2010], 's': [20

我有两个数据帧data2和data3:

data0 = {
    'state':  ['CA', 'CA', 'OH'],
    'year':   [2012, 2014, 2010],
    's': [2000, 4000, 5000]
     }
data1=pd.DataFrame(data0)

data2 = {
    'state':  ['CA', 'CA', 'OH'],
    'year':   [2012, 2014, 2010],
    's': [2000, 4000, None]
     }
data3=pd.DataFrame(data2)
首先,我想按州和年份统计人口:

data11 = data1.groupby(['state', 'year'])['s'].agg({'result1': 'count'})
data33 = data3.groupby(['state', 'year'])['s'].agg({'result2': 'count'})
问题是如何写一个声明

i) 如果data11中的每行计数(result1列)等于data33中的每行计数(result2),则打印“所有匹配行”(此处不显示匹配行)

ii)else打印“以下行失败”(并显示从data11和data33失败的行)

谢谢

一个数据帧的第一个:

df = pd.concat([data11, data33], axis=1)
print (df)
            result1  result2
state year                  
CA    2012        1        1
      2014        1        1
OH    2010        1        0
然后将这两列与(
==
)进行比较,并测试是否所有行都匹配,如果不匹配,则通过
~
反向掩码过滤不匹配的行:

m = df['result1'].eq(df['result2'])
if m.all():
    print ("all rows matched")
else:
    print ("the following rows failed")
    print (df[~m])


这正是我想要的答案——非常感谢耶斯雷尔!!你试过什么吗?你看过熊猫的文件了吗?
the following rows failed
            result1  result2
state year                  
OH    2010        1        0