Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用每个变量的平均值替换缺少的值_Python_Dataframe - Fatal编程技术网

Python 用每个变量的平均值替换缺少的值

Python 用每个变量的平均值替换缺少的值,python,dataframe,Python,Dataframe,我想:用我尝试过的方法替换缺少的值: num_df.fillna(num_df.mean()) 但我仍然缺少价值观 {'id': {0: 0, 1: 1, 2: 2, 3: 3}, 'age': {0: 48.0, 1: 7.0, 2: 62.0, 3: 48.0}, 'bp': {0: 80.0, 1: 50.0, 2: 80.0, 3: 70.0}, 'al': {0: 1.0, 1: 4.0, 2: 2.0, 3: 4.0}, 'su': {0: 0.0, 1: 0.0, 2: 3.0,

我想:用我尝试过的方法替换缺少的值:

num_df.fillna(num_df.mean())
但我仍然缺少价值观

{'id': {0: 0, 1: 1, 2: 2, 3: 3}, 'age': {0: 48.0, 1: 7.0, 2: 62.0, 3: 48.0}, 'bp': {0: 80.0, 1: 50.0, 2: 80.0, 3: 70.0}, 'al': {0: 1.0, 1: 4.0, 2: 2.0, 3: 4.0}, 'su': {0: 0.0, 1: 0.0, 2: 3.0, 3: 0.0}, 'bgr': {0: 121.0, 1: nan, 2: 423.0, 3: 117.0}, 'bu': {0: 36.0, 1: 18.0, 2: 53.0, 3: 56.0}, 'sc': {0: 1.2, 1: 0.8, 2: 1.8, 3: 3.8}, 'sod': {0: nan, 1: nan, 2: nan, 3: 111.0}, 'pot': {0: nan, 1: nan, 2: nan, 3: 2.5}, 'hemo': {0: 15.4, 1: 11.3, 2: 9.6, 3: 11.2}, 'pcv': {0: '44', 1: '38', 2: '31', 3: '32'}, 'wc': {0: '7800', 1: '6000', 2: '7500', 3: '6700'}, 'rc': {0: '5.2', 1: nan, 2: nan, 3: '3.9'}} ```

num_df.fillna(num_df.mean())

[编辑]

我理解实际问题,fillna(df.mean())用列的平均值填充nan值。有包含所有nan值的列。因此,在fillna(df.mean())方法之后得到nan值

我用下面所示的随机示例尝试了您的方法

import numpy as np
import pandas as pd
data = [[np.nan, np.nan, 15, 4], [1,2,3,4], [10,20,np.nan,30]]
df = pd.DataFrame(data)
df = df.fillna(df.mean())

它之所以有效,是因为我没有完整的nan列。

最后几列是字符串,而不是浮点数

在取
平均值之前,尝试转换为float:

#确保所有内容都是数字
num_df=num_df.apply(pd.to_numeric,errors='concurve')
#小气
num_df=num_df.fillna(num_df.mean())
打印(数字/单位)

请将您的问题作为文本包含在数据框中,以便人们可以将其复制到他们的环境中,并在您的数据框上测试他们的解决方案。你的数据框不能从文本的屏幕截图中重新创建。你对所有NaN的列的平均值有何期望?我想用每列的平均值替换NaN。我的数据框比我制作的屏幕截图大,它不仅有NaN,但是我的技术没有替换我rc列中的NaN。你能
打印吗(头数(4.to dict())
(尝试填充前)并将问题中的输出粘贴为dataframe builder?不幸的是,此方法无法替换所有缺少的值…某些列保留Nan@kevincaro我理解了这个问题,并更新了我的答案。这不是因为这个,因为我的rc列仍然有这些NanI。我有一条错误消息:
TypeError:float()参数必须是字符串或数字,而不是此行中的“NAType”
num\u df=num\u df.astype(float)
请立即尝试使用to\u numeric
import numpy as np
import pandas as pd
data = [[np.nan, np.nan, 15, 4], [1,2,3,4], [10,20,np.nan,30]]
df = pd.DataFrame(data)
df = df.fillna(df.mean())
   id    sod  pot  hemo  pcv    wc    rc
0   0  111.0  2.5  15.4   44  7800  5.20
1   1  111.0  2.5  11.3   38  6000  4.55
2   2  111.0  2.5   9.6   31  7500  4.55
3   3  111.0  2.5  11.2   32  6700  3.90