python - Pandas 类型错误: object of type 'float' has no len()

标签 python pandas

我正在使用 Python/Pandas 进行一些数据发现。

MVCE:我有一个包含一些街道地址的 CSV 文件,我想找到文件中最长地址的长度。 (这是我实际问题的简化版本)

我写了这个简单的Python代码:

import sys
import pandas as pd

df = pd.read_csv(sys.argv[1])

print(df['address'].map(len).max())

地址列是 str 类型,至少我是这么认为的(见下文)。

为什么我会收到此错误?

Traceback (most recent call last):
  File "eval-lengths.py", line 8, in <module>
    print(df['address'].map(len).max())
  File "C:\Python35\lib\site-packages\pandas\core\series.py", line 2996, in map
    arg, na_action=na_action)
  File "C:\Python35\lib\site-packages\pandas\core\base.py", line 1004, in _map_values
    new_values = map_f(values, mapper)
  File "pandas/_libs/src\inference.pyx", line 1472, in pandas._libs.lib.map_infer
TypeError: object of type 'float' has no len()

这是df.info()的输出

RangeIndex: 154733 entries, 0 to 154732
Data columns (total 2 columns):
address    154510 non-null object
zip        154732 non-null object
dtypes: object(2)
memory usage: 2.4+ MB

更新

这是一个示例 CSV 文件

address,zip
555 APPLE STREET,82101
1180 BANANA LAKE ROAD,81913
577 LEMON DR,81911
,99999

最后一行是重现问题的关键。

最佳答案

您的列中缺少数据,由 NaN(浮点类型)表示。

不要使用 map/apply 等来计算长度,只需使用 str.len 即可:

df['address'].str.len()

len() 不适用的项目会自动在结果中显示为 NaN。您可以fillna(-1)这些内容来指示结果在那里无效。

关于python - Pandas 类型错误: object of type 'float' has no len(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51460881/

相关文章:

Python:打印树的所有节点无意中存储数据

python - Pandas 字典向量化查找

python - 放大设置-更新事务DF

python - 计算一个词在 n 条推文中出现的次数

python - 将 JSON 元素分离到 pandas 数据帧的列中

python - Paramiko ssh_config 参数

python - 如何使用 Google App Engine ndb.KeyProperty

python - 为什么 django 和 python MySQLdb 每个数据库有一个游标?

python - Keras:我可以使用 model.predict 但不使用 model.predict_generator 来预测是否使用 model.fit_generator 训练模型

python - 使用 pandas 或 python 创建特征向量