我正在使用pandas读取csv文件的两列,readcsv()然后将值分配给字典.列包含数字和字母的字符串.偶尔会出现一个单元格为空的情况.在我看来,读取到该字典条目的值应该是None,而是nan分配.当然,None它更具描述性,因为它具有空值,而nan只是说读取的值不是数字.
我的理解是否正确,None和之间的区别是nan什么?为什么nan分配而不是None?
此外,我的字典检查任何空单元格一直在使用numpy.isnan():
for k, v in my_dict.iteritems():
if np.isnan(v):
Run Code Online (Sandbox Code Playgroud)
但是这给了我一个错误,说我不能使用这个检查v.我想这是因为要使用整数或浮点变量,而不是字符串.如果是这样,我该如何检查v"空单元格"/ nan案例?
考虑以下情况:
In [2]: a = pd.Series([1,2,3,4,'.'])
In [3]: a
Out[3]:
0 1
1 2
2 3
3 4
4 .
dtype: object
In [8]: a.astype('float64', raise_on_error = False)
Out[8]:
0 1
1 2
2 3
3 4
4 .
dtype: object
Run Code Online (Sandbox Code Playgroud)
我本来期望一个允许转换的选项,同时将错误的值(例如那个.)转换为NaNs.有没有办法实现这个目标?
我一直在努力解决这个问题,我尝试了不同的方法.
我有一个简单的DataFrame,如图所示,
我可以使用代码替换NaN为None(Not String"None"),
[![dfTest2 = dfTest.where(pd.notnull(dfTest), None)][2]][2]
但是,NaT不会被替换None.
我一直在寻找答案,但没有运气.有人可以帮忙吗?
先感谢您.
我是pandas的新手,我正在尝试在Dataframe中加载csv.我的数据缺失值表示为?,我试图用标准的缺失值替换它 - NaN
请帮助我.我曾尝试阅读Pandas文档,但我无法遵循.
def readData(filename):
DataLabels =["age", "workclass", "fnlwgt", "education", "education-num", "marital-status",
"occupation", "relationship", "race", "sex", "capital-gain",
"capital-loss", "hours-per-week", "native-country", "class"]
# ==== trying to replace ? with Nan using na_values
rawfile = pd.read_csv(filename, header=None, names=DataLabels, na_values=["?"])
age = rawfile["age"]
print age
print rawfile[25:40]
#========trying to replace ?
rawfile.replace("?", "NaN")
print rawfile[25:40]
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 pd.read_excel 将大量主要为数字数据的 .xls 和 .xlsx 文件读入 python。但是,这些文件使用 em-dash 来表示缺失值。我试图让 Python 将所有这些长破折号替换为 nans。我似乎找不到让 Python 甚至识别字符的方法,更不用说替换它了。我尝试了以下不起作用
df['var'].apply(lambda x: re.sub(u'\2014','',x))
Run Code Online (Sandbox Code Playgroud)
我也试过简单
df['var'].astype('float')
Run Code Online (Sandbox Code Playgroud)
将数据框中的所有 em-dashs 转换为 nans,同时将数字数据保留为浮点数的最佳方法是什么?