首页 > 解决方案 > 列和多行之间的减法

问题描述

我想暴露我的问题。我有一个这种类型的数据集,如下所示。我想在数据集中添加一个名为 的列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

谢谢您的帮助。

标签: pythonpandasdataframe

解决方案


您可以通过对其中一行进行移位操作来执行此操作。例如:

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


推荐阅读