如何将一个DataFrame的映射值关联至另一个?附具体示例需求
处理你的DataFrame需求
嘿,看起来你没把目标DataFrame的具体结构展示出来哦!不过我可以基于你给出的df1,分享几个常见的处理场景和实现代码,你可以对照你的目标结果来调整~
先看一下你原始的DataFrame:
import pandas as pd df1 = pd.DataFrame( data = { 'x_axis': ['p1','p2','p2','p4','p4'], 'y_axis': [1,2,3,1,5], 'error_type_A': ['error 2', 'error 1', 'error 1', 'error 2', 'error 1'], 'error_type_B': ['error 3','error 4','','error 3','error 4'] } )
场景1:按x_axis分组,聚合y_axis和错误类型
如果你的目标是按x_axis分组,计算y_axis的均值/总和,同时汇总对应的错误类型,可以这样做:
# 自定义函数:拼接非空的错误文本 def concat_errors(series): return ', '.join([s for s in series if s]) # 分组聚合 result = df1.groupby('x_axis').agg( y_mean=('y_axis', 'mean'), y_sum=('y_axis', 'sum'), errors_A=('error_type_A', concat_errors), errors_B=('error_type_B', concat_errors) ).reset_index()
得到的结果示例:
| x_axis | y_mean | y_sum | errors_A | errors_B |
|---|---|---|---|---|
| p1 | 1.0 | 1 | error 2 | error 3 |
| p2 | 2.5 | 5 | error 1, error 1 | error 4 |
| p4 | 3.0 | 6 | error 2, error 1 | error 3, error 4 |
场景2:合并error_type_A和error_type_B为一列错误信息
如果你的目标是把两个错误列合并成一个,去除空值,可以这样实现:
# 逐行合并非空错误 df1['combined_errors'] = df1.apply( lambda row: ', '.join([s for s in [row['error_type_A'], row['error_type_B']] if s]), axis=1 ) # 可选:保留需要的列 result = df1[['x_axis', 'y_axis', 'combined_errors']]
结果示例:
| x_axis | y_axis | combined_errors |
|---|---|---|
| p1 | 1 | error 2, error 3 |
| p2 | 2 | error 1, error 4 |
| p2 | 3 | error 1 |
| p4 | 1 | error 2, error 3 |
| p4 | 5 | error 1, error 4 |
场景3:转成错误类型的长格式统计
如果想要统计每种错误对应的x_axis和y_axis分布,可以把宽表转成长表:
# 转长格式并过滤空错误 melted = df1.melt( id_vars=['x_axis', 'y_axis'], value_vars=['error_type_A', 'error_type_B'], var_name='error_category', value_name='error' ).query("error != ''") # 按错误类别和错误内容排序 result = melted.sort_values(['error_category', 'error'])
结果示例:
| x_axis | y_axis | error_category | error |
|---|---|---|---|
| p1 | 1 | error_type_A | error 2 |
| p4 | 1 | error_type_A | error 2 |
| p2 | 2 | error_type_A | error 1 |
| p2 | 3 | error_type_A | error 1 |
| p4 | 5 | error_type_A | error 1 |
| p1 | 1 | error_type_B | error 3 |
| p4 | 1 | error_type_B | error 3 |
| p2 | 2 | error_type_B | error 4 |
| p4 | 5 | error_type_B | error 4 |
如果你能补充一下目标DataFrame的具体样子,我可以给你更精准的实现代码哦!
内容的提问来源于stack exchange,提问作者actnmk
相关产品推荐
相关产品推荐

