Python中读取CSV文件时随Test Name变化保留Percent列首个重复值的实现方法
解决CSV中按Test Name保留Percent列首次重复值的问题
嘿,我明白你的需求啦——要在Test Name切换的时候,让Percent列只保留每个测试组里第一次出现的重复值,其他重复的清空但不删掉整行对吧?用Python的pandas库就能轻松搞定,下面是具体步骤和代码:
实现思路
核心逻辑是按Test Name分组,在每个分组内对Percent列做去重处理:只保留该组内第一次出现的数值,后续重复的数值替换为空(或者NaN,看你需求),这样既不会删除任何行,又能达到你要的展示效果。
代码示例
假设你的CSV文件名为test_data.csv,可以用以下代码处理:
import pandas as pd # 读取原始CSV文件 df = pd.read_csv('test_data.csv') # 按Test Name分组,处理Percent列:仅保留每组内首次出现的值,重复项设为空字符串 df['Percent'] = df.groupby('Test Name')['Percent'].transform( lambda x: x.where(~x.duplicated(), '') ) # 保存处理后的结果到新CSV df.to_csv('processed_test_data.csv', index=False)
代码解释
groupby('Test Name'):把数据按测试名称分成一个个独立的组,确保我们只在同一个Test Name范围内处理重复值。transform:这个方法会让处理后的结果和原DataFrame的行数保持一致,不会打乱原有行的顺序。x.where(~x.duplicated(), ''):x.duplicated()会标记出该组内重复的行(第一次出现的为False,后续重复为True),~取反后,我们用where把重复的行替换为空字符串。如果你想保留NaN(适合后续数值计算),把''换成pd.NA即可。
效果示例
比如你的原始数据是:
| Test Name | Percent | Other Column |
|---|---|---|
| Test A | 50% | Data 1 |
| Test A | 50% | Data 2 |
| Test A | 75% | Data 3 |
| Test B | 50% | Data 4 |
| Test B | 50% | Data 5 |
处理后会变成:
| Test Name | Percent | Other Column |
|---|---|---|
| Test A | 50% | Data 1 |
| Test A | Data 2 | |
| Test A | 75% | Data 3 |
| Test B | 50% | Data 4 |
| Test B | Data 5 |
完全符合你要的效果哦!
内容的提问来源于stack exchange,提问作者Rebekah Lee
相关产品推荐
相关产品推荐

