Python 检查Dataframe列中的哪个值是字符串
我有一个由大约20万条记录组成的数据框架。当我将此数据框作为输入输入输入到模型时,它会抛出以下错误: 不支持将字符串强制转换为浮点 是否有任何方法可以检查数据帧中的哪个特定值导致此错误 我试着运行这个命令并检查列中是否有值是字符串 映射中为False((lambda x:type(x)=str),trainDF['Embeddings'])) 输出: 真的Python 检查Dataframe列中的哪个值是字符串,python,pandas,dataframe,numpy,Python,Pandas,Dataframe,Numpy,我有一个由大约20万条记录组成的数据框架。当我将此数据框作为输入输入输入到模型时,它会抛出以下错误: 不支持将字符串强制转换为浮点 是否有任何方法可以检查数据帧中的哪个特定值导致此错误 我试着运行这个命令并检查列中是否有值是字符串 映射中为False((lambda x:type(x)=str),trainDF['Embeddings'])) 输出: 真的 在panda中,当我们转换这些类型混合列时 df['col'] = pd.to_numeric(df['col'],errors = 'co
在panda中,当我们转换这些类型混合列时
df['col'] = pd.to_numeric(df['col'],errors = 'coerce')
它将返回
NaN
对于那些无法转换为float的项目,您可以使用dropna
进行拖放,或者使用fillna填充一些默认值。您应该循环trainDF
的索引,并使用try except>查找有错误的行
>>> import pandas as pd
>>> trainDF = pd.DataFrame({'Embeddings':['100', '23.2', '44a', '453.2']})
>>> trainDF
Embeddings
0 100
1 23.2
2 44a
3 453.2
>>> error_indices = []
>>> for idx, row in trainDF.iterrows():
... try:
... trainDF.loc[idx, 'Embeddings'] = float(row['Embeddings'])
... except:
... error_indices.append(idx)
...
>>> trainDF
Embeddings
0 100.0
1 23.2
2 44a
3 453.2
>>> trainDF.loc[error_indices]
Embeddings
2 44a
所有项目都可以是字符串。float('1.23')
可以工作,但是float('xyz')
会产生此错误。