如何将整数转换为np.object?

时间:2018-09-14 16:42:15

标签: python python-3.x pandas numpy type-conversion

是的,我完全知道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。额外的限制:

  1. 我无法控制CSV文件格式。
  2. CSV非常庞大,我宁愿在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 上进行操作,也不愿在整个表格上进行操作。
  3. 缺少某些字段(例如missing_value),从语义上讲与""不同,因此不能将-1传递到na_values=-1。< / li>
  4. 实际上,我不仅在计算缺失值,还将read_csvdf[c]传递给函数missing_value

1 个答案:

答案 0 :(得分:1)

我们可以通过isin

修复您的输出
df.isin([-1,'-1']).sum()

Out[276]: 
Numbers    1
Strings    1
dtype: int64