如何在Pandas中移除指定列重复值且保留所有数据行?
解决DataFrame重复列值保留首次、其余置空的问题
步骤1:构造示例DataFrame
先还原你的原始数据结构:
import pandas as pd data = { 'Country': ['China', 'China', 'China', 'United Kingdom', 'United Kingdom', 'United Kingdom'], 'Country code': ['CN', 'CN', 'CN', 'UK', 'UK', 'UK'], 'Port Name': ['Yantian', 'Shekou', 'Quanzhou', 'Plymouth', 'Cardiff', 'Bird port'] } df = pd.DataFrame(data)
步骤2:实现重复值置空逻辑
使用duplicated()标记重复行,结合where()方法将重复位置的列值替换为空字符串,不会删除整行:
# 处理Country列:仅保留首次出现的值,重复行置空 df['Country'] = df['Country'].where(~df['Country'].duplicated(), '') # 处理Country code列:仅保留首次出现的值,重复行置空 df['Country code'] = df['Country code'].where(~df['Country code'].duplicated(), '')
最终效果
处理后的DataFrame如下:
| Country | Country code | Port Name |
|---|---|---|
| China | CN | Yantian |
| Shekou | ||
| Quanzhou | ||
| United Kingdom | UK | Plymouth |
| Cardiff | ||
| Bird port |
原理说明
df['列名'].duplicated():返回布尔Series,首次出现的行标记为False,后续重复行标记为True~:对布尔值取反,将首次出现的行转为True,重复行转为Falsewhere()方法:保留True位置的原始值,将False位置的值替换为指定的空字符串
内容的提问来源于stack exchange,提问作者Lion_YY
相关产品推荐
相关产品推荐

