Python 通过基于定义数量的相似列值查找相似行来更新数据帧中的行值
我试图通过使用相似性阈值来比较不同行中有多少值是相同的,从而更新数据框中的行,以说明缺少的数据。下面是我正在尝试的,但是它没有更新行,尽管调用了正确的行来填充。当前阈值超过相同值的一半,因此在本例中,任何具有3个或更多类似值的行,我希望它只返回数据帧中已经存在的值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
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
我能够解决这个问题