Python如何用bfill方法填充自定义值(如“#NA######')?

2024-04-27 01:05:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含“#NA######”的数据框。我想用组平均值来填充这个值。你知道吗

我知道我可以先用np.NAN公司,然后使用菲尔纳警长,但是还有更方便的方法吗?你知道吗


Tags: 数据方法np公司nan平均值na警长
1条回答
网友
1楼 · 发布于 2024-04-27 01:05:47

设置

df

  Group   Value
0      1      10
1      1  #NA###
2      3       5
3      2      10
4      2  #NA###
5      3  #NA###
6      1      40
7      2  #NA###
8      3     100
9      1      20

调用pd.to_numeric,将这些字符串强制为nan。你知道吗

df.Value = pd.to_numeric(df.Value, errors='coerce')

现在,按Group分组,并用mean调用fillna

df = df.set_index('Group').Value\
       .fillna(df.groupby('Group').mean().Value)\
       .reset_index()
df

   Group       Value
0      1   10.000000
1      1   23.333333
2      3    5.000000
3      2   10.000000
4      2   10.000000
5      3   52.500000
6      1   40.000000
7      2   10.000000
8      3  100.000000
9      1   20.000000

另一种填充方法(从现在删除的答案中)我认为非常好,包括groupby+transform-

df.Value = df.Value.fillna(df.groupby('Group')['Value'].transform('mean'))
df

       Group       Value
    0      1   10.000000
    1      1   23.333333
    2      3    5.000000
    3      2   10.000000
    4      2   10.000000
    5      3   52.500000
    6      1   40.000000
    7      2   10.000000
    8      3  100.000000
    9      1   20.000000  

相关问题 更多 >