如何对DataFrame中含Identified的行数值求和并合并对应行?
解决方案
原始DataFrame
| Sample | Value | Domain |
|---|---|---|
| S1 | 12 | Domain_Identified_X13_A |
| S1 | 25 | Domain_Identified_X28_B |
| S1 | 18 | Domain_Unidentified |
目标DataFrame
| Sample | Value | Domain |
|---|---|---|
| S1 | 37 | Domain_Identified |
| S1 | 18 | Domain_Unidentified |
实现代码
用Pandas的字符串匹配结合分组聚合即可完成需求:
import pandas as pd # 构造原始数据 df = pd.DataFrame({ 'Sample': ['S1', 'S1', 'S1'], 'Value': [12, 25, 18], 'Domain': ['Domain_Identified_X13_A', 'Domain_Identified_X28_B', 'Domain_Unidentified'] }) # 统一分组规则:含"Identified"的Domain替换为统一名称,其余保留原值 df['Grouped_Domain'] = df['Domain'].apply(lambda x: 'Domain_Identified' if 'Identified' in x else x) # 按Sample和分组后的Domain聚合求和 result_df = df.groupby(['Sample', 'Grouped_Domain'], as_index=False)['Value'].sum() # 重命名列名匹配目标格式 result_df = result_df.rename(columns={'Grouped_Domain': 'Domain'}) print(result_df)
代码说明
- 用
apply结合lambda表达式快速完成Domain列的分组标记,把所有包含"Identified"的条目统一替换为目标名称 - 以
Sample和分组后的Domain为维度,对Value列做求和聚合 - 最后调整列名,得到完全符合需求的结果
内容的提问来源于stack exchange,提问作者eraysahin
相关产品推荐
相关产品推荐

