简体   繁体   English

比较两个数据帧上的列

[英]compare columns over two dataframes

I have two dataframes that look like:我有两个数据框,看起来像:

import pandas as pd

f1 = {'entity':['X','Y','Z'],'instrument':['A','B','C'],'Function':['Rates','FX','Rates'],'amt':[1,2,3]}
df1 = pd.DataFrame(data=f1)

f2 = {'entity':['X','Y','Z'],'instrument':['A','B','C'],'Depot':['A','A','B'],'amt':[1,2,3]}
df2 = pd.DataFrame(data=f2)

When I try to iterate over the columns of the two dataframes, I get an error.当我尝试遍历两个数据帧的列时,出现错误。 Any ideas why ?任何想法为什么?

common_cols=['entity','instrument']
common_cols_iter=iter(common_cols)

for index1,row1 in df1.iterrows():
    for index2,row2 in df2.iterrows():
        if row1[next(common_cols_iter)]==row2[next(common_cols_iter)]:
            print("common")
        else:
            print("not")

I am trying to achieve:我正在努力实现:

for index1,row1 in df1.iterrows():
    for index2,row2 in df2.iterrows():
        if (row1['entity']==row2['entity'] and row1['instrument']==row2['instrument']):
            print("common")
        else:
            print("not")

Why dont you iterate over columns using a for?为什么不使用 for 迭代列?

common_cols=['entity','instrument']
common_cols_iter=iter(common_cols)

def check_cond(row1,row2):
    for col in common_cols:
        if row1[col] != row2[col]:
            return False
    return True

for index1,row1 in df1.iterrows():
    for index2,row2 in df2.iterrows():
        if check_cond(row1,row2):
            print("common")
        else:
            print("not")
next(common_cols_iter)

只会在您的代码中工作两次,之后它会说停止迭代。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM