数据框如下
date state Deaths Cases Day Avg day of case
2020-03-01 AK 0 15.5000 1.0 1.0
2020-03-02 AK 0 28.4048 2.0 0.0
2020-03-03 AK 0 43.8333 3.0 0.0
2020-03-04 AK 0 60.8905 4.0 0.0
2020-03-05 AK 0 81.3548 5.0 0.0
数据框按状态和日期分组。每个州分组中的“平均病例日”是“日”列中的第一天。每个州的第一天是“03-01-2020”。如果该州稍后开始记录(例如:阿拉巴马州于 03-13-2020 开始记录”,这将是“天”列中的第 13 天。我这样做是因为 03-01-2020 是大多数州开始出现病例的时间。至实现上述,我做了以下代码:
df['date'] = pd.to_datetime(df['date'])
df = df.dropna()
df = df[df['date'] >= '03-01-2020']
# getting the day column
df['Day'] = df.groupby('state')['date'].rank(ascending=True)
#creating the avg day of case
df['Avg day of case'] = 0
#getting the first day to be the first day of the Avg day of case
df.loc[df.groupby('state')['date'].head(1).index, 'Avg day of case'] = df.loc[:,'Day']
这一切都很好。现在是困难的部分。为了完成“案例平均天数”,我想应用以下公式来计算案例的平均天数。
for i in range(1, len(df)):
x = (((df.loc[i, 'Cases'] - df.loc[i-1, 'Cases']) * (df.loc[i, 'Day']- df.loc[i-1, 'Avg day of
case'])) / (df.loc[i, 'Cases'])) + (df.loc[i-1, 'Avg day of case'])
df.loc[i, 'Avg day of case'] = round(x, 2)
但是当我这样做时,我总是得到
<块引用>密钥错误:0
上述异常是以下异常的直接原因:
我不太明白为什么。我订购了日期并按州分组。之后,我应用了代码,该代码将使每个州的第一个值对案例的第一天进行分组。这应该已经摆脱了除以零的问题。我做错了什么?
这是一个示例 Excel 工作表,其中公式确实有效。提前致谢。