DataFrame指定行与列取相反数

一、背景

 

1.1 适用场景

在操作中可能需要对两行,或者两列进行相减,这个时候如果可以将被减数变为相反数,那么相减问题,就变成了相加问题。相加问题,便可以使用groupby等聚合运算。

 

1.2 工作环境

  • windos系统
  • Python版本  python3.11.8

 

1.3  数据准备

该数据存储在相对路径: agg.xlsx

 

 

二、 指定列取相反数

 对num1 列与num2列取相反数:

import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
file_path = 'agg.xlsx'

df = pd.read_excel(file_path)

df['num1'] = df['num1'].apply(lambda x: -x if pd.notnull(x) else x)
df['num2'] = df['num2'].map(lambda x: -x if pd.notnull(x) else x)

print(df)

 

 



二、 指定行取相反数

import pandas as pd
import warnings
warnings.filterwarnings('ignore')


file_path = 'agg.xlsx'
df = pd.read_excel(file_path)


# 将省份为安徽的所有行,数字取相反数
index_list = df[df['省份'] == '安徽'].index.tolist()  #获取目标行的index
# 目的是获取数字列,我的案例里面只有两列,真是工作的场景可能有几十列,这个时候通过取差集的方式更方便,具体可根据工作场景选择
columns_list = df.columns.tolist()
columns_not_num = ['省份', '城市']
columns_num = [i for i in columns_list if i not in columns_not_num]
for col in columns_num:
    df[col][index_list] =0 - df[col][index_list]
    
print(df)

 

 

posted @ 2025-03-10 11:00  qsl_你猜  阅读(40)  评论(0)    收藏  举报