Python中基于关键列计算绝对差并设置ID列为首列的方法
数据集列绝对差计算与列序调整
合并后的数据集
已将两个数据集合并为如下DataFrame:
| Date | ID | A_1 | A_2 | B_1 | B_2 | C_1 | C_2 |
|---|---|---|---|---|---|---|---|
| 01-01-2024 | 1 | 1 | 3 | 4 | 9 | 8 | 9 |
| 01-01-2024 | 3 | 9 | 8 | 7 | 4 | 3 | 2 |
| 01-01-2024 | 6 | 10 | 20 | 30 | 40 | 50 | 60 |
其中A_1、B_1、C_1来自dataset1,A_2、B_2、C_2来自dataset2,ID列在两个数据集中唯一。
需求说明
需完成两项操作:
- 计算对应列(A_1与A_2、B_1与B_2、C_1与C_2)的绝对差
- 将ID列设为结果DataFrame的第一列
初始实现代码
初始代码可实现列间绝对差计算,但未将ID列设为首列,且存在语法错误(已修正):
import pandas as pd import numpy as np # 修正原代码的列名格式与字符串拼接错误 columns = ['A', 'B', 'C'] results_df = pd.DataFrame() for col in columns: diff = np.abs(df[f'{col}_1'] - df[f'{col}_2']) results_df[f'{col}_diff'] = diff.round()
列序调整解决方案
初始代码生成的结果未包含ID、Date列,且ID列未处于首列。通过以下代码补充列并调整顺序:
# 补充原数据集的Date和ID列 results_df['DATE'] = df['Date'] results_df['ID'] = df['ID'] # 调整列顺序,将ID设为第一列 cols = ['ID', 'DATE'] + [col for col in results_df.columns if col not in ['ID', 'DATE']] results_df = results_df[cols]
最终结果DataFrame结构如下:
| ID | DATE | A_diff | B_diff | C_diff |
|---|---|---|---|---|
| 1 | 01-01-2024 | 2 | 5 | 1 |
| 3 | 01-01-2024 | 1 | 3 | 1 |
| 6 | 01-01-2024 | 10 | 10 | 10 |
内容的提问来源于stack exchange,提问作者testenthu
相关产品推荐
相关产品推荐

