我有一个数据集,其中包含包含大量重复行的列。我的列看起来类似于下表中的索引列:
索引 | 新_专栏 |
---|---|
2020BAS | 2020BAS |
2022CAD | 2022CAD |
2012BET | 2012BET_1 |
2012BET | 2012BET_2 |
2012BET | 2012BET_3 |
2008TEQ | 2008TEQ |
2021JET | 2021JET_1 |
2021JET | 2021JET_2 |
2011ART | 2011ART_1 |
2011ART | 2011ART_2 |
2011ART | 2011ART_3 |
2019质量保证体系 | 2019质量保证体系 |
2010POS | 2010POS_1 |
2010POS | 2010POS_2 |
2010POS | 2010POS_3 |
2010POS | 2010POS_4 |
2016YIG | 2016YIG |
2017LIM | 2017LIM |
使用 Pandas,我想创建一个新列,其中包含索引列中的行,并向特定行项目的所有重复出现添加编号注释。我心中的结果可以在上表中的New_Column系列中看到。
我一直在此处和其他地方进行搜索,但仍然找不到此问题的任何示例或建议的解决方案。诚然,我是 Python 新手,并且仍在尝试找出如何解决这个问题。任何帮助都将是一次巨大的学习经历
您可以使用
.groupby('Index').cumcount()
获取重复值的计数,将这些值转换为适当的字符串后缀并将其添加回原始列:
import pandas as pd
df = pd.DataFrame({
'Index': [
'2020BAS', '2022CAD', '2012BET', '2012BET', '2012BET', '2008TEQ',
'2021JET', '2021JET', '2011ART', '2011ART', '2011ART', '2019QAS',
'2010POS', '2010POS', '2010POS', '2010POS', '2016YIG', '2017LIM',
]
})
df['New_Column'] = df['Index'] + df.groupby('Index').cumcount().apply(lambda v: f'_{v}' if v > 0 else '')
print(df)
# Index New_Column
# 0 2020BAS 2020BAS
# 1 2022CAD 2022CAD
# 2 2012BET 2012BET
# 3 2012BET 2012BET_1
# 4 2012BET 2012BET_2
# 5 2008TEQ 2008TEQ
# 6 2021JET 2021JET
# 7 2021JET 2021JET_1
# 8 2011ART 2011ART
# 9 2011ART 2011ART_1
# 10 2011ART 2011ART_2
# 11 2019QAS 2019QAS
# 12 2010POS 2010POS
# 13 2010POS 2010POS_1
# 14 2010POS 2010POS_2
# 15 2010POS 2010POS_3
# 16 2016YIG 2016YIG
# 17 2017LIM 2017LIM