2024-04-27 01:05:47 发布
网友
我有一个包含“#NA######”的数据框。我想用组平均值来填充这个值。你知道吗
我知道我可以先用np.NAN公司,然后使用菲尔纳警长,但是还有更方便的方法吗?你知道吗
设置
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。你知道吗
pd.to_numeric
df.Value = pd.to_numeric(df.Value, errors='coerce')
现在,按Group分组,并用mean调用fillna
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-
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
设置
调用
pd.to_numeric
,将这些字符串强制为nan。你知道吗现在,按
Group
分组,并用mean
调用fillna
另一种填充方法(从现在删除的答案中)我认为非常好,包括
groupby
+transform
-相关问题 更多 >
编程相关推荐