我有一个数据集:
value score
0 0.0 8
1 0.0 7
2 NaN 4
3 1.0 11
4 2.0 22
5 NaN 12
6 0.0 4
7 NaN 15
8 0.0 5
9 2.0 24
10 1.0 12
11 1.0 15
12 0.0 5
13 2.0 26
14 NaN 28
里面有一些NaN。我想用这些条件填充那些 NaN:
- 如果'score'小于10,则用0.0填充nan
- 如果 'score' 在 10 到 20 之间,则用 1.0 填充 nan
- 如果'score'大于20,则用2.0填充nan
我如何在 pandas 中执行此操作?
这是一个示例数据框:
value = [0,0,np.nan,1,2,np.nan,0,np.nan,0,2,1,1,0,2,np.nan]
score = [8,7,4,11,22,12,4,15,5,24,12,15,5,26,28]
pd.DataFrame({'value': value, 'score':score})
最佳答案
使用 cut
然后使用 fillna
df.value.fillna(pd.cut(df.score,[-np.Inf,10,20,np.Inf],labels = [0,1,2]).astype(int),inplace=True)
df
Out[6]:
value score
0 0.0 8
1 0.0 7
2 0.0 4
3 1.0 11
4 2.0 22
5 1.0 12
6 0.0 4
7 1.0 15
8 0.0 5
9 2.0 24
10 1.0 12
11 1.0 15
12 0.0 5
13 2.0 26
14 2.0 28
关于pandas - 如何用多个 if-else 条件填充 nans?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73211773/