【Python】【Pandas】将符合条件行的某列数值改为负数

萌狼蓝天情景还原:

支付宝/微信导出的账单,不管支出还是收入都是正数。
我想把支出的金额改成负数,其他不变就这样。

解决办法

这里用到的是pandas.apply
e……下面的写法虽然比较麻烦,但是 这是比较好理解的写法,你理解之后可以把他写简单点。

data=data.apply(debuff,axis=1)

  • data是你读入的数据,比如data=pd.read_excel(FilePath)
  • debuff是自定函数名,你自己随便取,后面我们要写这个函数的。
  • axis=1 表示一行一行的取

然后就是写debuff这个函数

def debuff(c): # 这个c自己想写啥名就啥名,代表一行数据
# c["收/支"] 表示取出这一行"收/支"这一列的值
# .strip是取出空白字符
	 if c["收/支"].strip() == "支出":
	 	# 如果是支出,就改为负数
        c['金额'] = -c['金额']
        # 改好后记得将数据return回去
        return c
    else:
	# 如果不是支出,那直接return回去即可
        return c

完毕!

在此顺便记录几个常用代码写法:
1.不重复取出一列的值data[列名].unique()或者data[列名].value_counts(sort=False)

2.对取出的列值进行格式处理

# 这个示例是去掉空白字符
odata_jiaoyifenlei = odata["交易分类"].unique()
odata_jiaoyifenlei = [i.replace(" ","") for i in odata_jiaoyifenlei]

3.根据某列不重复值合计金额
`data.groupby(["交易类型"],sort=False).sum("金额")["金额"]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌狼蓝天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值