【发布时间】:2021-03-01 22:55:02
【问题描述】:
我有一个数据框,其中包含工厂每天生产的产品总数,但它是一个累积字段,而不是每日值。我试图通过从第二天的数字中减去每天的累积数字来计算每日值。这是我正在使用的代码。我正在使用loc 来确保它将新值插入到原始数据框中。这样,1000 行需要 10 秒,这有点长,因为原始数据要大得多。想知道是否有更快的方法。
之前:
date sum
0 2020-03-24 10
1 2020-03-25 50
2 2020-03-26 90
3 2020-03-27 140
4 2020-03-28 180
代码:
for i in range(1, 1000):
data.loc[i, 'daily_products'] = data.loc[i, 'sum'] - data.loc[i-1, 'sum']
之后:
date sum daily_products
0 2020-03-24 10
1 2020-03-25 50 40
2 2020-03-26 90 40
3 2020-03-27 140 50
4 2020-03-28 180 40
以及 1000 行所需的时间:
Total runtime of the program is 9.468996286392212
【问题讨论】:
-
data['daily_products'] = data['sum'] - data['sum'].shift(-1)呢? -
或者只是
data["sum"].diff()?
标签: python pandas dataframe loops pandas-loc