我正在使用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案例?
我有一个数据集d,其中包含不同形式的缺失值:
d = {'col1': [1, 2, '', 'N/A', 'unknown', None],
'col2': [3, 4, 'N/A', None, 'N/A_N/A', '']}
d = pd.DataFrame(data=d)
col1 col2
0 1 3
1 2 4
2 N/A
3 N/A None
4 unknown N/A_N/A
5 None
Run Code Online (Sandbox Code Playgroud)
我想看看每列中实际上缺少多少个值。因此,我想将所有空白、n/a 和未知数转换为None。我尝试了这段代码并得到以下结果:
d.replace(to_replace =['N/A', '', 'unknown', 'N/A_N/A'],
value = None)
col1 col2
0 1 3
1 2 4
2 2 4
3 2 None
4 2 None
5 None None
Run Code Online (Sandbox Code Playgroud)
我不明白为什么d.replace会这样,有人有更好的解决方案来解决我的问题吗?我希望它是这样的:
col1 col2
0 1 3 …Run Code Online (Sandbox Code Playgroud) 鉴于这种 -
import pandas as pd
s = pd.Series(['', '1', '2', '', '4', '', '6'])
为什么这个 -
s.replace('', None).values
结果如下 -
array(['', '1', '2', '2', '4', '4', '6'], dtype=object)
当我期待这个 -
array([None, '1', '2', None, '4', None, '6'], dtype=object)