假设我有一个数据框,如下所示:
col1 col2
0 10
1 23
2 21
3 15
我想按顺序将col2中的每个值与前一行相减,这样我们就可以减去前一个相减的值,得到:
col1 col2
0 10 # left unchanged as index == 0
1 13 # 23 - 10
2 8 # 21 - 13
3 7 # 15 - 8
我发现的其他解决方案都是按原样减去以前的值,而不是减去新的值。我希望避免使用for循环,因为我有一个非常大的数据集。
2条答案
按热度按时间0sgqnhkj1#
试从下面来理解“前减”
所以我们就这么做了
tpgth1q72#
下面是一个简单的纯Pandas(不需要导入numpy)方法,这是一个更直接的概念,易于从代码中理解,无需额外的解释:
我们首先定义一个函数,它将完成所需的工作:
使用上面的函数,创建新列的代码将是:
让我们比较一下纯Pandas方法与另一个答案中的numpy方法所使用的函数/方法的数量。
Pandas方法使用2个函数/方法:ssf()和.apply()和1操作:简单减法。
numpy方法使用5个函数/方法:.arange()、len()、.tril()、.multiply、.outer()和.dot()以及3操作:数组加法、数组减法和模除法。