isinstance(-1, np.object)
True
.
然而,
-1 != "-1"
(显然)这就是我的问题所在。
我读了一本书
DataFrame
从CSV文件
-1
Numbers,Strings
1,A
2,-1
-1,B
和
read_csv
生产:
Numbers Strings
0 1 A
1 2 -1
2 -1 B
dtypes
Numbers int64
Strings object
dtype: object
我有一个
missing_value
变量是
-1
和
>>> missing_value = -1
>>> for c in z.columns:
print(c,(z[c] == missing_value).sum())
Numbers 1
Strings 0
>>> (z.Strings == str(missing_value)).sum()
1
我理解
我的问题是如何修改循环,以便它将DTRT:
for c in z.columns:
print(c,(z[c] == (missing_value if np.issubdtype(z[c].dtype,np.number) else str(missing_value))).sum())
Numbers 1
Strings 1
附加限制:
-
我无法控制CSV文件格式。
-
CSV很大,我宁愿做手术
而不是整张桌子。
-
缺少一些字段(如
""
,就这么过去了
na_values=-1
不是一个选择。
-
df[c]
和
缺少\u值
到函数
do_complicated_analysis_on_a_series
.