Я уверен, что есть более простой, короткий, более элегантный и более питонический способ решения этой проблемы, но в то же время здесь есть решение. Он возвращает df со строками, в которых первые 16 членов совпадают со вторыми 16.
Вот пример с несколькими строками и столбцами:
df = pd.DataFrame({'a':[4,2,4,5,5,4],
'b':[4,3,1,2,2,4],
'c':[1,2,4,5,5,3],
'd': [4, 3, 2, 2, 2, 4],})
print df
a b c d
0 4 4 1 4
1 2 3 2 3
2 4 1 4 2
3 5 2 5 2
4 5 2 5 2
5 4 4 3 4
df_a = df.iloc[:,:2]
df_b = df.iloc[:,2:]
df_b.columns = df_a.columns
c = df_b-df_a
c = c.applymap(lambda x: True if x!=0 else False)
df_a = df_a.mask(c)
a = pd.isnull(df_a).any(1).nonzero()[0]
df = df.drop(df.index[a])
Выход:
a b c d
1 2 3 2 3
3 5 2 5 2
4 5 2 5 2
В вашем случае:
df_a = df.iloc[:,:16]
df_b = df.iloc[:,16:]