python pandas比较两列并返回结果

时间:2018-02-01 01:22:43

标签: python string pandas dataframe comparison

我有两个数据帧,如下所示。我向两者添加了key列,以便我可以获得笛卡尔联合。我想将df3数据框的BEN_NAME2列中的每个值与df4数据框的names2列进行比较。我最初的计划是执行笛卡尔关节并检查是否有任何匹配值。但是我的两个数据框都非常大,当我尝试加入时,我收到内存错误。

我想从列BEN_NAME2一次一个单元格执行此操作。我想在df3中创建一个新列,如果找到完全匹配,我会从df3给出行索引。

例如,df3将获得两个新列,列match的值为(0,1,0),列matching_row_index的值为(0,3,0),因为jones第二行的值在df4数据框

中匹配
sales = [{'key': 0, 'BEN_NAME2': '150 jones'},
         {'key': 0,  'BEN_NAME2': 'jones'},
         {'key': 0,  'BEN_NAME2': '50'}]
df3 = pd.DataFrame(sales)

sales = [{'key': 0, 'names2': 'xyc'},
         {'key': 0,  'names2': 'fsdfa'},
         {'key': 0,  'names2': 'jones'}]
df4 = pd.DataFrame(sales)

我的主要目标是以相对较快的速度获得输出。

1 个答案:

答案 0 :(得分:0)

循环使用iloc()。此功能允许您像数组一样导航数据框。

for i in range(0,10):
    A=df['Ben_names'].iloc[i]
    B= df['column_name'].iloc[i]
    #write the conditional statement using if and value to be inserted is var

    df.['column_nmae2'].iloc[i]=var