[英]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.