在pandas数据框中用'nan`替换数字

时间:2017-10-13 02:13:11

标签: python pandas replace nan

我对pandas数据框中的列有问题。由于数据输入错误,我有一个truefalse的列,但它也包含大约71个小数。

我试图摆脱小数并将其转换为nan,以便我可以忽略这些行以进行进一步分析。

当我尝试:

datafinal['any_misread'] = datafinal['any_misread'].where(datafinal['any_misread'] < 1, np.nan)

我收到错误:

TypeError: unorderable types: str() < int()

我还尝试过使用.replace的逻辑但没有成功。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:2)

让我们尝试使用whereastype

df = pd.DataFrame({'col1':[True, False, 0.12, True, False, .3]})

df.where((df.col1.astype(str) == 'True') | (df.col1.astype(str) == 'False'))

输出:

    col1
0   True
1  False
2    NaN
3   True
4  False
5    NaN

答案 1 :(得分:0)

您可以检查列中每个项目的类型是否不是bool并更改值。

df = pd.DataFrame([[True],[True],[False],[10.2],[1.0],[False],[0]], columns=['misread'])
df.misread[df.misread.apply(lambda x: not isinstance(x, bool))] = pd.np.nan

df
# returns
  misread
0    True
1    True
2   False
3     NaN
4     NaN
5   False
6     NaN