分组内DataFrame值编辑:将C组Col3列间隔从100调整为200
实现方案
我们可以直接通过Pandas的布尔索引筛选目标分组后生成新的步长序列完成修改,全程仅修改指定分组的指定列,不会影响其他列和其他分组的数据,适配你有大量列的使用场景:
完整可运行代码示例
import pandas as pd import numpy as np # 构造示例数据,实际使用时替换为你自己的DataFrame即可 data = { 'Group': ['A','A','B','B','B','B','C','C','C','C'], 'Col2': [50,3,200,4.5,89,48,443,54,63,7], 'Col3': [44,144,500,600,700,800,220,320,420,520] } df = pd.DataFrame(data) # 核心处理逻辑 # 1. 筛选Group为C的行 c_mask = df['Group'] == 'C' # 2. 取C分组Col3的第一个值作为基准值 c_col3_start = df.loc[c_mask, 'Col3'].iloc[0] # 3. 生成步长为200的新序列赋值回原列 df.loc[c_mask, 'Col3'] = c_col3_start + 200 * np.arange(c_mask.sum())
补充说明
如果你的C分组行需要先按某一列排序后再调整步长,可以在处理前先对筛选出的C分组行排序,示例:
# 示例:按Col2升序排序C分组的行后再调整步长 df.loc[c_mask] = df.loc[c_mask].sort_values('Col2', ignore_index=True)
运行处理后的df就和你期望的输出结果完全一致。
内容的提问来源于stack exchange,提问作者dmd7
相关产品推荐
相关产品推荐

