如何从现有DataFrame拆分出df1(无重复名称)和df2(重复项)?
拆分DataFrame为唯一记录与重复记录集
需求说明
从给定的DataFrame中拆分出两个新DataFrame:
df1:包含每个Name的唯一首条记录,无重复项df2:包含剩余的重复Name记录
输入DataFrame
先还原输入的DataFrame(可直接运行):
import pandas as pd data = { 'Name': ['Amy', 'Amy', 'jack', 'mo', 'mo', 'mo', 'linn'], 'Age': [24, 34, 66, 76, 88, 98, 33] } df = pd.DataFrame(data)
解决方案
利用pandas的duplicated()方法标记重复项,再拆分数据:
# 标记每条记录是否是对应Name的重复项(保留首条) is_duplicate = df.duplicated(subset='Name', keep='first') # 拆分得到df1:非重复的首条记录 df1 = df[~is_duplicate] # 拆分得到df2:剩余的重复记录 df2 = df[is_duplicate]
输出结果
- df1(若需统一
Name大小写,可额外添加df['Name'] = df['Name'].str.capitalize()处理):
| Name | Age |
|---|---|
| Amy | 24 |
| jack | 66 |
| mo | 76 |
| linn | 33 |
- df2:
| Name | Age |
|---|---|
| Amy | 34 |
| mo | 88 |
| mo | 98 |
内容的提问来源于stack exchange,提问作者user20777609
相关产品推荐
相关产品推荐

