Pandas DataFrame:用下一列值替换列值以避免重复

米奇·普迪尔

我有一个包含数百行和 10 列的 Pandas DataFrame。每行代表一个唯一的 ID,每列代表第 k 个最近邻索引。也就是说,第一列将用于 ID 的最近邻居的索引,第二列将是第二个最近的邻居,依此类推,直到第 10 个最近的邻居。

然而,第一列有一些重复,因为有几个 ID 共享一个公共最近邻。但是,我想在没有重复的情况下找到每个 ID 的最近邻索引。例如,如果前两个 ID 共享最近的邻居,那么我想使用第二列来查找第二个 ID 的非重复最近邻居。例如,如果我的 DataFrame 如下所示:

         NN1        NN2        NN3      ... NN10
1       1           3          8
2       1           5          9
3       1           5          2
4       3           8          1

那么结果将是:

         NN_no_dup      
1        1
2        5 
3        2
4        3

在我的例子中,据我所知,在使用第 10 个最近邻之后,似乎没有出现重复的情况(如果有,我可以简单地增加我使用的最近邻的数量)。

数学

这可能有效,尽管它肯定不是最优雅的方式:

a = pd.DataFrame(....)

used_list = []

for i in range(a.shape[0]):
    if np.isin(a.iloc[i,0],used_list):
        take_column = ~np.isin(a.iloc[i], used_list)
        a.iloc[i,0] = a.iloc[i,np.argmax(take_column)]
        
    used_list.append(a.iloc[i,0])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用另一列Pandas DataFrame替换一列中的值

用另一列中的相同行值替换pandas dataframe列中的值

Pandas DataFrame-按行,有条件地用最后一列值替换多个列值

如何基于另一列B的值替换Pandas DataFrame列A的值

Pandas Dataframe用另一列中的值替换字符串的一部分

如何替换一列中的重复值以使其基于Pandas中的另一列而唯一?

有效地将一列中的值替换为另一列Pandas DataFrame

用pandas数据框另一列中的值替换空列表

替换另一列中的缺失值-Pandas

基于唯一列值的dict项替换pandas DataFrame中的行

Pandas:用唯一值替换多个列值

pandas DataFrame:用列的平均值替换nan值

根据另一列(Python,Pandas)中的值删除一列的重复项

基于第一列值的 Pandas DataFrame Wide to Long

Python Pandas用第二列对应行中的值替换第一列中的NaN

更改值数据框pandas python下一列中的值

pandas:在多列中找到字符串后,获取下一列的值

Python Pandas DataFrame检查一列的值是否在另一列表中

如何遍历pandas DataFrame的一列并从另一列返回值?

Python 3 / Pandas Dataframe用二进制值将一列拆分为多列

搜索输入值小于下一个索引列值的pandas dataframe列

替换pandas DataFrame中的列值

Pandas - 基于最后一个非空白值和下一列的 Fillna

pandas:使用重复的值填充基于另一列的nan值

根据另一列的值替换 Pandas 数据框中的特定值

根据另一列中的值替换pandas df中的值

如何根据 Pandas 中另一列中的值替换 NAN 值

如何在Pandas中创建新列,条件是要重复另一列的值?

根据另一列中的 nan 替换 pandas 列中的值