Python 在显示错误数据类型时应用方法
在StackOverflow数据集上使用apply()方法时,我遇到了一个错误。我试图在“业余爱好者”一栏中找出每个回复的长度。我使用的代码是:Python 在显示错误数据类型时应用方法,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,在StackOverflow数据集上使用apply()方法时,我遇到了一个错误。我试图在“业余爱好者”一栏中找出每个回复的长度。我使用的代码是: result = pd. read_csv ("survey_results_public.csv") result ["HOBBYIST"]. apply (len) 我得到的错误是: TypeError:类型为“float”的对象没有len() 即使“HOBBYIST”列中的数据只包括“Yes”和“No”(
result = pd. read_csv ("survey_results_public.csv")
result ["HOBBYIST"]. apply (len)
我得到的错误是:
TypeError:类型为“float”的对象没有len()
即使“HOBBYIST”列中的数据只包括“Yes”和“No”(以及一些空值),这显然不是浮点数据类型
后来我将代码更改为:
result ["HOBBYIST"]. astype (str). apply (len)
这说明了正确的结果,但是为什么应用方法认为“是”和“否”是浮点数据类型?
< P>你可以防止<代码>熊猫。result = pd.read_csv("survey_results_public.csv", dtype={"HOBBYIST": str})
您还可以删除所有空记录以防止此类问题。这是样品
#import library
import pandas as pd
#sample data
result = pd.DataFrame({'name': ['Ivan','John','Shaun'],'HOBBYIST':['Yes',None,'No']})
result
具有空数据的结果数据集
使用dropna()方法,我们可以省略所有空记录,如下所示
#removing or dropping all null records
result = result.dropna()
result
没有空记录的结果数据集
现在可以对apply()函数执行len
df["HOBBYIST"].apply(len)
结果
N.B。确保指定的列是字符串类型。除非最好按照上述答案将列转换为字符串类型。列中可能有
NaN
值?指定列中可能有空数据或空数据df.info()的输出是什么
name HOBBYIST
0 Ivan Yes
2 Shaun No
df["HOBBYIST"].apply(len)
0 3
Name: HOBBYIST, dtype: int64