如何为Pandas DataFrame添加随node列重置的id列?
按分组重置ID列的Pandas实现
解决方案
使用Pandas的groupby()结合cumcount()方法,通过矢量化操作实现需求,完全符合Pandas最佳实践,无需循环。
步骤代码
- 读取原始数据(无表头时需指定列名)
import pandas as pd # 读取数据,假设原始数据存为csv文件 df = pd.read_csv('data.csv', header=None, names=['node', 'value'])
- 添加分组重置的ID列
# 按node列分组,每组内从0开始顺序计数 df['id'] = df.groupby('node').cumcount()
- 调整列顺序至期望格式
# 将id列移至首位 df = df[['id', 'node', 'value']]
输出结果
执行上述代码后,DataFrame的输出与你期望的格式完全一致:
id node value 0 0 node1 0.858 1 1 node1 0.897 2 2 node1 0.954 3 0 node2 3.784 4 1 node2 7.640 5 2 node2 11.592
原理说明
groupby('node')将数据按node的取值分割为独立分组;cumcount()为每个分组内的行分配从0开始的连续整数,自动在新分组开始时重置计数;- 整个操作是Pandas内置的矢量化运算,性能远优于循环遍历,同时代码简洁易维护。
内容的提问来源于stack exchange,提问作者fanbondi
相关产品推荐
相关产品推荐

