根据累积值将非累积计算为新列(Python)

时间:2020-04-06 18:41:20

标签: python python-3.x pandas pandas-groupby

我的目标是在下面转换-当前数据输出

enter image description here

通过添加一个名为Cases的新列,该列是非累积的,无法进一步分析。

我已经尝试过此解决方案,但是我不确定我的错误-

Data["Cases"] = Data.groupby(level=0).diff().fillna(Data).reset_index()

请告知

1 个答案:

答案 0 :(得分:1)

一种简单的方法是获取累积列中的值的滞后,然后计算累积和滞后之间的差。

import pandas as pd

date = ['2020-03-01','2020-03-02','2020-03-03','2020-03-04','2020-03-05'] 
cases = [1, 2, 4, 7, 10]
data = list(zip(date, cases))

df = pd.DataFrame(data, columns=['Date','Cases'])
df['Lag'] = df.Cases.shift(1).fillna(0)
df['Daily Cases'] = df.Cases - df.Lag

print(df)
         Date  Cases  Lag  Daily Cases
0  2020-03-01      1  0.0          1.0
1  2020-03-02      2  1.0          1.0
2  2020-03-03      4  2.0          2.0
3  2020-03-04      7  4.0          3.0
4  2020-03-05     10  7.0          3.0

请记住,这里的顺序很重要。因此,请按升序对累积列进行排序。

如果有帮助,别忘了将此标记为已接受答案