【问题标题】:Pandas:subtract current value with previous value in dataframe熊猫:用数据框中的前一个值减去当前值
【发布时间】:2020-05-27 04:31:15
【问题描述】:

我有一个熊猫数据框:

data = pd.DataFrame({'start':[150,1500,1650,1700,1840],'end':[200,1650,1700,1738,1800]})

我正在尝试将当前行的起始值减去前一行的结束值,并继续将减去的值添加到最后。

例如

第二个循环 1500-200

第三次循环 1650-1650 ..

第 5 次循环 1840-1738

总减法 = 1402

到目前为止,我正在尝试使用 df.values

for x,y in enumerate(audio_output.values):
    print(x,y)
    if (y[2]+1)-(y[2]) >0:

我无法访问要从当前循环中减去的 previos 索引。

有没有办法访问 previos 索引。我在 itertuples() 中尝试过,我似乎也无法获得以前的索引。

【问题讨论】:

  • 如果你重新排列条款,你会看到你可以做 'data.iloc[1:,0].sum()-data.iloc[:-1,1].sum()'

标签: python python-3.x pandas dataframe


【解决方案1】:

使用以下代码。

sum(data['start'].iloc[1:].values - data['end'].iloc[:-1].values)

【讨论】:

  • 如果你使用 np.sum 而不是 sum 你保持它矢量化
【解决方案2】:

您可以使用df.shift:

In [1906]: (data['start'].shift(-1) - data['end']).sum()
Out[1906]: 1402.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-06
    • 2017-02-20
    • 2017-11-01
    • 2013-12-10
    • 2019-05-20
    • 2020-07-06
    • 1970-01-01
    相关资源
    最近更新 更多