如何识别指定列值重复的行并修改原DataFrame的P列值?
解决方法
直接通过索引定位+原地赋值就能把修改同步回原DataFrame,核心是避免修改子DataFrame副本,而是直接操作原表的目标行。
步骤示例
假设你的DataFrame名为df,按以下步骤操作:
- 导入依赖库
import pandas as pd import numpy as np
- 定义分组键(即你提到的四列)
group_cols = ['Chr', 'Start', 'Ref', 'Revel_Score']
- 定位需要修改的行的索引
如果你已经能筛选出符合条件的子DataFrame(比如叫target_rows),直接取它的索引即可:
# 假设你已经得到了符合条件的子表target_rows target_indices = target_rows.index
如果还没筛选,也可以用groupby直接获取:
# 筛选出四列值完全重复的行的索引 target_indices = df.groupby(group_cols).filter(lambda x: len(x) > 1).index
- 生成随机数并更新原DataFrame
# 生成对应数量的0.01~0.1之间的随机数 random_add = np.random.uniform(low=0.01, high=0.1, size=len(target_indices)) # 直接通过loc定位原表的目标行,修改P列 df.loc[target_indices, 'P'] += random_add
关键说明
- 用
df.loc[索引, 列名]赋值是原地修改原DataFrame,不会产生副本,确保修改直接同步到原表。 - 避免直接修改筛选出来的子DataFrame(比如
target_rows['P'] += ...),因为子表可能是原表的视图或副本,修改后不会同步回原表。
内容的提问来源于stack exchange,提问作者Manolo Dominguez Becerra
相关产品推荐
相关产品推荐

