python - 在 Pandas 中按顺序重命名重复的列名
问题描述
我有一个数据框 df,我想在其中按连续顺序重命名两个重复的列:
数据
DD Nice Nice Hello
0 1 1 2
期望的
DD Nice1 Nice2 Hello
0 1 1 2
正在做
df.rename(columns={"Name": "Name1", "Name": "Name2"})
但是,我正在运行该rename
函数,因为两个列名相同,因此结果不可取。
解决方案
您可以使用itertools.count()
计数器和列表表达式来创建新的列标题,然后将它们分配给数据框。
例如:
>>> import itertools
>>> df = pd.DataFrame([[1, 2, 3]], columns=["Nice", "Nice", "Hello"])
>>> df
Nice Nice Hello
0 1 2 3
>>> count = itertools.count(1)
>>> new_cols = [f"Nice{next(count)}" if col == "Nice" else col for col in df.columns]
>>> df.columns = new_cols
>>> df
Nice1 Nice2 Hello
0 1 2 3
(f 字符串需要 Python 3.6+)
编辑:或者,根据下面的评论,列表表达式可以替换任何可能包含"Nice"
的标签,以防出现意外空格或其他字符:
new_cols = [f"Nice{next(count)}" if "Nice" in col else col for col in df.columns]
推荐阅读
- spring - 在抽象类的 @Autowired 字段中获取 null
- java - 使用 Paho 连接到 AWS AppSync MQTT 代理
- python - Polly 将 mp3 下载为 int?尝试使用 Lambda 将其提升到 S3
- html - SVG - 如何移动 img 背景但面具保持粘性
- vim - 如何让我的 gvimrc 文件使用我的 vimrc 文件 (VIM)
- docker - Docker 卷和 Drupal
- python - image.open 两次打开相同的图像并建议创建循环
- c - 类型双关语和 malloc'ed 内存
- video - MP4 比 Webm 更受欢迎有什么技术原因吗?
- css - Chrome 浏览器开发工具是否尊重指定 !important 的样式更改?