python - 如何找到哪些单元格无法转换为 float ?

标签 python python-3.x pandas

pandas.DataFrame.astype(float) 引发 ValueError: could not convert string to float 错误。

找到导致这种情况发生的细胞的最佳方法是什么?

最佳答案

我觉得你可以先fillna有一些数字,例如1apply函数 to_numeric带有参数 errors='coerce',如果无法转换值,则由 NaN 填充。然后你检查isnullany .最后使用boolean indexing用于查找具有 NaN 值的列和索引 - 这意味着显然存在 string 值或其他无法转换为数字的值。

import pandas as pd
import numpy as np

df = pd.DataFrame({'A':['a','b','',5],
                   'B':[4,5,6,5],
                   'C':[np.nan,8,9,7]})

print (df)
   A  B    C
0  a  4  NaN
1  b  5  8.0
2     6  9.0
3  5  5  7.0
a = (df.fillna(1).apply(lambda x: pd.to_numeric(x, errors='coerce')))
print (a)
     A  B    C
0  NaN  4  1.0
1  NaN  5  8.0
2  NaN  6  9.0
3  5.0  5  7.0

b = (pd.isnull(a))
print (b)
       A      B      C
0   True  False  False
1   True  False  False
2   True  False  False
3  False  False  False
print (b.any())
A     True
B    False
C    False
dtype: bool

print (b.any()[b.any()].index)
Index(['A'], dtype='object')

print (b.any(axis=1))
0     True
1     True
2     True
3    False
dtype: bool

print (b.any(axis=1)[b.any(axis=1)].index)
Int64Index([0, 1, 2], dtype='int64')

#df is not modified
print (df)
   A  B    C
0  a  4  NaN
1  b  5  8.0
2     6  9.0
3  5  5  7.0

关于python - 如何找到哪些单元格无法转换为 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37377264/

相关文章:

Python 保存到映射共享驱动器时出错

python-3.x - Python3 : how to read the txt. bz2 文件

python-3.x - `xlsxwriter` 除非更改颜色,否则线条透明度不起作用

python - Pandas :遍历列并从一列开始

python - 从旧数据框创建子列

python - 从现有数据框创建新数据框 - SettingWithCopyWarning

python - Pandas 基于列的多条件函数

python - 基于另一个数据框 python pandas 替换列值 - 更好的方法?

带有变音符号和连字的 Python 3 正则表达式,

python - 在Python中使用finally语句打印出我已经循环了多少次