在 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
我需要以特定方式在 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