You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas仅删除DataFrame指定列重复值后赋值异常的解决问询

解决Pandas中仅删除B列重复值并按顺序填充的问题

你的核心需求是保留A列所有数据,同时让B列仅保留唯一值并按顺序填充,剩余位置留空。之前的代码问题出在直接赋值时Pandas会按索引对齐,导致空值出现在原重复值的索引位置,而不是按顺序覆盖。

正确实现步骤:

  1. 提取B列的唯一值并排序(和你之前的逻辑一致)
  2. 创建一个和原DataFrame长度相同的新数组,前N个位置填入唯一值(N是唯一值的数量),剩下的位置填充空值
  3. 将这个新数组赋值给原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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 21:23:31