基于另一列的 Pandas 条件行值

问题描述

数据框的图片1

嗨!我一直试图弄清楚如何计算 erc-20 代币的钱包余额,但无法让它发挥作用。这个想法很简单,当“状态”列的行值为“发送”时,该值会是负面的,当它是“接收”时,它会是正面的。最后,我将使用 groupby 并按令牌符号计算总和。问题是,我无法让条件语句起作用。有什么办法可以做到这一点?我试过进行循环迭代,但它们似乎不起作用。

解决方法

假设 df 是您提供的数据帧,选择合适的切片并将值乘以 -1 就足够了:

df.loc[df['Status'] == 'Sending','Value'] *= -1 

然后分组:

df = df.groupby(['Symbol']).sum().reset_index()

pandas 中的循环不是一个好主意 - 您能够以更优化的矢量化方式执行操作,因此请尽量避免这种情况。