&引用;菲尔纳;python中的命令不返回表示使用熊猫

&引用;菲尔纳;python中的命令不返回表示使用熊猫,python,pandas,dataframe,mean,fillna,Python,Pandas,Dataframe,Mean,Fillna,我正在尝试用python运行fillna命令。它只是无法用任何内容替换Nan值,并且不会返回错误 import pandas as pd import io import requests import numpy as np url='https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data' s=requests.get(url)

我正在尝试用python运行fillna命令。它只是无法用任何内容替换Nan值,并且不会返回错误

import pandas as pd
import io
import requests
import numpy as np
url='https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data'
s=requests.get(url).content
df=pd.read_csv(io.StringIO(s.decode('utf-8')))
df.columns=['Scn', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'A10', 'CLASS']


df.to_csv("wisconsinbreast.csv")

m,n=df.shape
#print(m,n)
df = df.replace('?', np.nan)
#print(df)
#print(df.mean()) 
print(df.fillna(df.mean()))
在第22行,Nan仍然在那里。我已经尽了我所能在这里搜索问题,但这甚至没有给我反馈为什么失败。据我所知,df.mean应该在不使用Nan值的情况下进行计算,但df.mean不会为包含Nan的列返回值。

read\u csv
那个
“?”
把一切都绊倒了。当
read\u csv
看到它时,它假定整个列是dtype
object
并将其作为字符串读入。当然,您可以在事后解决此问题,但我建议在开始时使用
na_values
参数来阻止此问题:

df = pd.read_csv(io.StringIO(s.decode('utf-8')), na_values=['?'])

pd.到数值
但如果您真的想在事后修复它,请执行此操作,而不是执行
replace

df.A7 = pd.to_numeric(df.A7, errors='coerce')
在任何一种情况下,
fillna
都应在之后按预期工作

df.fillna(df.mean())

         Scn  A2  A3  A4  A5  A6         A7  A8  A9  A10  CLASS
0    1002945   5   4   4   5   7  10.000000   3   2    1      2
1    1015425   3   1   1   1   2   2.000000   3   1    1      2
2    1016277   6   8   8   1   3   4.000000   3   7    1      2
3    1017023   4   1   1   3   2   1.000000   3   1    1      2
4    1017122   8  10  10   8   7  10.000000   9   7    1      4
5    1018099   1   1   1   1   2  10.000000   3   1    1      2
6    1018561   2   1   2   1   2   1.000000   3   1    1      2
7    1033078   2   1   1   1   2   1.000000   1   1    5      2
8    1033078   4   2   1   1   2   1.000000   2   1    1      2
9    1035283   1   1   1   1   1   1.000000   3   1    1      2
10   1036172   2   1   1   1   2   1.000000   2   1    1      2
11   1041801   5   3   3   3   2   3.000000   4   4    1      4
12   1043999   1   1   1   1   2   3.000000   3   1    1      2
13   1044572   8   7   5  10   7   9.000000   5   5    4      4
14   1047630   7   4   6   4   6   1.000000   4   3    1      4
15   1048672   4   1   1   1   2   1.000000   2   1    1      2
16   1049815   4   1   1   1   2   1.000000   3   1    1      2
17   1050670  10   7   7   6   4  10.000000   4   1    2      4
18   1050718   6   1   1   1   2   1.000000   3   1    1      2
19   1054590   7   3   2  10   5  10.000000   5   4    4      4
20   1054593  10   5   5   3   6   7.000000   7  10    1      4
21   1056784   3   1   1   1   2   1.000000   2   1    1      2
22   1057013   8   4   5   1   2   3.548387   7   3    1      4
23   1059552   1   1   1   1   2   1.000000   3   1    1      2
24   1065726   5   2   3   4   2   7.000000   3   6    1      4

你的错误是什么?您的输入、输出和预期输出是什么?我想这就是为什么我在尝试解决op时得到了“TypeError:只能将str(而不是“int”)连接到str:)有趣的一点,谢谢!