Pandas仅删除DataFrame指定列重复值后赋值异常的解决问询
解决Pandas中仅删除B列重复值并按顺序填充的问题
你的核心需求是保留A列所有数据,同时让B列仅保留唯一值并按顺序填充,剩余位置留空。之前的代码问题出在直接赋值时Pandas会按索引对齐,导致空值出现在原重复值的索引位置,而不是按顺序覆盖。
正确实现步骤:
- 提取B列的唯一值并排序(和你之前的逻辑一致)
- 创建一个和原DataFrame长度相同的新数组,前N个位置填入唯一值(N是唯一值的数量),剩下的位置填充空值
- 将这个新数组赋值给原DataFrame的B列
完整代码:
import pandas as pd # 构造原始数据 data = {'A': [1,1,2,3,3,4,4], 'B': [1,1,2,3,3,4,4]} df = pd.DataFrame(data) # 获取B列的唯一值并排序 unique_b = df['B'].sort_values().unique() # 构造新的B列数据:前len(unique_b)个位置填唯一值,其余为空字符串 new_b = pd.Series([*unique_b, *['']*(len(df)-len(unique_b))]) # 赋值回原DataFrame df['B'] = new_b print(df)
运行结果:
A B 0 1 1 1 1 2 2 2 3 3 3 4 4 3 5 4 6 4
如果需要用NaN而非空字符串,只需把代码里的''换成pd.NA即可。
内容的提问来源于stack exchange,提问作者David95
相关产品推荐
相关产品推荐

