python - 列和多行之间的减法
问题描述
我想暴露我的问题。我有一个这种类型的数据集,如下所示。我想在数据集中添加一个名为 的列balance_required_for_next_bet
,是一个计算如下的变量:
('balance'
行变量的值) - ('bet'
下一行变量的值)
Date bet current loss current win balance
0 2016-08-20 8 8 0.00 -8.00
1 2016-08-21 32 28 18.00 -18.00
2 2016-08-27 14 14 0.00 -32.00
以下是要通过计算添加到数据集中的新列的示例:
balance required for next bet (balance - next bet)
0 -8 - 32 ===> -40
1 -18 - 14 ===> -32
2 -32 - 0 ===> -32
谢谢您的帮助。
解决方案
您可以通过对其中一行进行移位操作来执行此操作。例如:
import pandas as pd
df = pd.DataFrame({'bet': [8, 32, 14], 'balance': [-8, -18, -32]})
df['next_bet'] = df.balance - df.bet.shift(-1).fillna(0)
# bet balance next_bet
# 0 8 -8 -40.0
# 1 32 -18 -32.0
# 2 14 -32 -32.0
df.bet
通过-1
有效地将每个条目向上移动一行来移动列。通过从您的列中减去这个移位的列,您将从每一行的当前df.balance
余额中减去下一个赌注。我添加以确保您没有得到任何值。fillna(0)
NaN
推荐阅读
- symfony - 按字段对学说的@OneToMany ArrayCollection 进行排序
- javascript - 如何将 rabbitMQ 连接分配给类的属性以在另一个函数中使用它?
- javascript - 从 JSON 数组中检索与键相关的特定值
- typescript - 如何重用接口成员的类型?
- java - 读取 Swift Message Prowide (WIFE) 后关闭 fileInputStream
- sql-server - 如何只获得不同的行
- c# - 简洁的行到 json
- apache-flink - Flink:如何在 TaskManager 中设置系统属性?
- java - SPOCK:如何模拟供应商行为
- python - Keras 中的分割网络在训练期间收敛到单个类