pandas - 如何用多个 if-else 条件填充 nans?

标签 pandas

我有一个数据集:

    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/

相关文章:

python - 根据索引获取行,然后创建另一个单独的数据框

python - 使用 Pandas 在日期的两个时间之间进行插值

python - 如何向 pandas 编写的 CSV 添加自定义列标签?

python - 使用 Pandas 逐 block 计算数据库 block 的值

python - 使用 json_normalize 从多个级别获取元值

python - 更改 Pandas 中的默认选项

python - 比较 pandas 中的多个数据框时在数据框中创建列

python - python中带有条件的if语句

python - groupby pandas 的 concat 结果

python - 根据列中首先出现的字符串/类别,保留该行并删除 pandas 中的其他行