我有以下 Dataframe :
d_test = {
'random_staff' : ['gfda', 'fsd','gec', 'erw', 'gd', 'kjhk', 'fd', 'kui'],
'cluster_number' : [1, 2, 3, 3, 2, 1, 4, 2]
}
df_test = pd.DataFrame(d_test)
cluster_number
列包含从1
到n
的值。某些值可能会重复,但不会显示缺失值。例如,上述这些值为:一米三氮一x一米四氮一x一米五氮一x一米六氮一x
我希望能够从cluster_number
列中选择某个值,并将该值的每次出现更改为唯一值集。不应显示缺失值。例如,如果我们选择值2
,则cluster_number
的理想结果为[1, 2, 3, 3, 5, 1, 4, 6]
。请注意,该列中有三个2
。我们保留第一个为2
,将下一个出现的2
更改为5
,将最后一个出现的2
更改为6
。
我为上面的逻辑编写了代码,它运行良好:
cluster_number_to_change = 2
max_cluster = max(df_test['cluster_number'])
first_iter = True
i = cluster_number_to_change
for index, row in df_test.iterrows():
if row['cluster_number'] == cluster_number_to_change:
df_test.loc[index, 'cluster_number'] = i
if first_iter:
i = max_cluster + 1
first_iter = False
else:
i += 1
但它是写为for循环,我试图了解,如果可以转换成Pandas.apply
方法(或任何其他有效的矢量化解决方案)的形式。
1条答案
按热度按时间1wnzp6jl1#
使用布尔索引:
输出: