簡體   English   中英

Pandas DataFrame:用下一列值替換列值以避免重復

[英]Pandas DataFrame: Replacing column values with next column values to avoid duplication

我有一個包含數百行和 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])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM