Python 通过基于定义数量的相似列值查找相似行来更新数据帧中的行值

Python 通过基于定义数量的相似列值查找相似行来更新数据帧中的行值,python,pandas,dataframe,Python,Pandas,Dataframe,我试图通过使用相似性阈值来比较不同行中有多少值是相同的,从而更新数据框中的行,以说明缺少的数据。下面是我正在尝试的,但是它没有更新行,尽管调用了正确的行来填充。当前阈值超过相同值的一半,因此在本例中,任何具有3个或更多类似值的行,我希望它只返回数据帧中已经存在的值 threshold = .5 for index1, row1 in df.iterrows(): if row1.isnull().values.any(): for index2, row2 in df.i

我试图通过使用相似性阈值来比较不同行中有多少值是相同的,从而更新数据框中的行,以说明缺少的数据。下面是我正在尝试的,但是它没有更新行,尽管调用了正确的行来填充。当前阈值超过相同值的一半,因此在本例中,任何具有3个或更多类似值的行,我希望它只返回数据帧中已经存在的值

threshold = .5
for index1, row1 in df.iterrows():
    if row1.isnull().values.any():
        for index2, row2 in df.iterrows():
            count = 0
            for col in df.columns:
                print (col)
                if row1[col] == row2[col] and index1 != index2:
                    count = count + 1
                else:
                    count = count
            if count > threshold*len(df.columns) and count < len(df.columns):
                row1.at[index1] = index2
                break
预期的数据帧如下所示:

CODE   B2004    B2014   C2100   X3200   X1300
ID                  
20326   40.0    40.0    29.0    39.0    49.0
20338   40.0    40.0    29.0    39.0    49.0
20361   40.0    40.0    49.0    59.0    89.0
20381   40.0    40.0    49.0    59.0    89.0
20384   40.0    40.0    49.0    59.0    89.0
12385   40.0    40.0    29.0    29.0    55.0
12485   40.0    NaN     NaN     NaN     49.0
12492   35.0    35.0    29.0    29.0    49.0
12685   35.0    35.0    29.0    39.0    49.0
12687   40.0    40.0    29.0    29.0    55.0

任何想法或想法都将受到赞赏

我发现了问题所在。因为行只是df的一个副本,所以它实际上并没有赋值。通过将第二行到最后一行更改为

df.loc[index1] = row2

我能够解决这个问题,我发现了问题所在。因为行只是df的一个副本,所以它实际上并没有赋值。通过将第二行到最后一行更改为

df.loc[index1] = row2
我能够解决这个问题