在 Pandas 中应用方法显示错误的数据类型
2021-06-02
985
在 StackOverflow 数据集上使用 apply() 方法时,我收到错误。我试图在“HOBBYIST”列中找到每个回复的长度。我使用的代码是:
result = pd. read_csv ("survey_results_public.csv")
result ["HOBBYIST"]. apply (len)
我收到的错误是: TypeError:类型为“float”的对象没有 len()
尽管“HOBBYIST”列中的数据仅包含“是”和“否”(以及一些 Null 值),这显然不是浮点数据类型。
后来我将代码更改为:
result ["HOBBYIST"]. astype (str). apply (len)
这显示了正确的结果,但为什么 apply 方法将“是”和“否”等值视为浮点数据类型?
2个回答
您可以阻止
pandas.read_csv()
推断某些列的数据类型。
result = pd.read_csv("survey_results_public.csv", dtype={"HOBBYIST": str})
Corralien
2021-06-02
您还可以删除所有 Null 记录以防止出现此类问题。以下是示例
#import library
import pandas as pd
#sample data
result = pd.DataFrame({'name': ['Ivan','John','Shaun'],'HOBBYIST':['Yes',None,'No']})
result
Result Dataset with Null data
name HOBBYIST
0 Ivan Yes
1 John None
2 Shaun No
使用 dropna() 方法,我们可以省略所有 Null 记录,如下所示
#removing or dropping all null records
result = result.dropna()
result
Resulting Dataset without Null Records
name HOBBYIST
0 Ivan Yes
2 Shaun No
现在您可以在 apply() 函数上执行 len。
df["HOBBYIST"].apply(len)
Result
0 3
Name: HOBBYIST, dtype: int64
注意 。确保您指定的列是字符串类型。除非最好将列转换为字符串类型,如上述答案所示。
Littin Rajan
2021-06-02