是的,我完全知道isinstance(-1, np.object)
返回True
。
但是,-1 != "-1"
(很明显)就存在我的问题。
我从CSV文件中读取了DataFrame
,其中-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
和{p>
-1
我了解为什么正在发生。 我的问题是如何修改循环,以便进行DTRT:
>>> 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
这真的是正确的方法吗?
PS。额外的限制:
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
上进行操作,也不愿在整个表格上进行操作。missing_value
),从语义上讲与""
不同,因此不能将-1
传递到na_values=-1
。< / li>
read_csv
和df[c]
传递给函数missing_value
。答案 0 :(得分:1)
我们可以通过isin
df.isin([-1,'-1']).sum()
Out[276]:
Numbers 1
Strings 1
dtype: int64