在 Pandas 中应用转发 fillna() 并根据列进行重置

Applying the forwarding fillna() in Pandas with reseting based on a column

我需要以特定方式在 Pandas 数据帧上执行前向 fillna()。我来解释一下。

我有一个包含 3 列城市、年龄、药物的数据框(按 ['city'、'Age'] 排序)。

city Age Value
0 NY 30 Nan
1 NY 35 12AA
2 NY 40 Nan
3 NY 45 Nan
4 NY 50 15AA
5 NY 55 Nan
6 LA 25 Nan
7 LA 30 Nan
8 LA 35 14DD
9 LA 40 Nan
10 LA 45 12AA
11 LA 50 Nan
12 LA 55 Nan
13 DC 35 Nan

我需要做的是在转发方向填充Nan值(将Nan值替换为之前的非Nan值)。唯一的转折点是当城市改变时转发 fillna 应该被重置。以下 table 显示了所需的输出。

city Age Value
0 NY 30 Nan
1 NY 35 12AA
2 NY 40 12AA
3 NY 45 12AA
4 NY 50 15AA
5 NY 55 15AA
6 LA 25 Nan
7 LA 30 Nan
8 LA 35 14DD
9 LA 40 14DD
10 LA 45 12AA
11 LA 50 12AA
12 LA 55 12AA
13 DC 35 Nan

如何在 pandas 中进行这种根据城市列重置的转发填写?

让我们试试groupby ffill:

df['Value'] = df.groupby('city')['Value'].ffill()
print(df)

输出:

   city  Age Value
0    NY   30   NaN
1    NY   35  12AA
2    NY   40  12AA
3    NY   45  12AA
4    NY   50  15AA
5    NY   55  15AA
6    LA   25   NaN
7    LA   30   NaN
8    LA   35  14DD
9    LA   40  14DD
10   LA   45  12AA
11   LA   50  12AA
12   LA   55  12AA
13   DC   35   NaN