比较两个数据框并使用true / false新建列的函数

时间:2019-09-04 07:54:16

标签: python pandas function

我正在尝试制作一个脚本来自动执行一些“无聊的东西”。在我新的实习工作场所记录合规性。我的问题如下:

    我需要制作一个函数,该函数接受两个数据帧(预期数据和事实数据),并按特定的行比较它们的值。

  1. 完成此操作后,我需要创建一个名为“ Compliance”的列,该列将显示布尔值,即无论数据是否符合要求,都显示true或false。我有点受阻,因此非常感谢您的帮助。

数据帧不是相同的。但是拥有一些相同的值:

我曾尝试使用som循环在df上进行初始化,但我缺乏一些基本的python逻辑(和经验)。

我也尝试过pd.merge和np.where,但我似乎找不到合适的解决方案

我在想类似的东西:

def checkConsistency(df1, df2, rows):

    for index, row in df1.iterrows():
        hostname = row['column name here']

        for index2, row2, in df2.iterrows():
            deviceName = row2['column name here']

    df = pd.merge(df1, how='inner', left_on=['index'], right_on[rows])
    df["Compliance"] = np.where( (df1.index[row]) == (df2.index[row2]), True, False)

    return df

预期的输出应该是相关的行,并在新的“ Compliance”列中添加布尔值

1 个答案:

答案 0 :(得分:0)

我认为这应该有效

import pandas as pd

def checkConsistency(df1, df2, indexItem):
    listReturn = []
    for i in range(len(df1)):
        listReturn.append(df1.iloc[i,indexItem] == df2.iloc[i,indexItem])

    df1["Compliance"] = listReturn

    return df1

data = [1,2,3,4,5]
df = pd.DataFrame(data)

data = [1,1,2,4,5]
df2 = pd.DataFrame(data)

print(checkConsistency(df,df2,0))