【发布时间】:2020-02-22 07:16:57
【问题描述】:
我正在尝试使用 for 循环从数据框的列中删除重音符号,但我不断收到错误消息“float object has no attribute encode”并且它是一个 str 列。最有趣的是,我在代码的两点应用了这个循环,它只在第二点识别错误。
df_ = df_target.copy()
for col in df_:
if col == 'estado' or col == 'cidade' and (df_[col] is not None and isinstance(df_[col], str)):
print(df_[col].head(100))
df_[col] = df_[col].apply(unidecode)
df_target 是一个 pandas 数据框,在这一步之前,它从一个 CSV 文件中接收数据
col 从数据框中读取列的名称
df_[col] 应该读取名为 estado(州)和 cidade(城市)的列中的所有元素
我只想从这两列中删除所有重音符号。
如果有人也可以帮助我在列表理解中编写这个 for 循环会很棒,我试过但没有奏效。这个切片在一个类中,我希望尽可能保持最干净和最简单。
【问题讨论】:
-
不知道
df_target是什么形状/类型(我假设它是字符串值的可迭代)并且没有实际尝试代码:df_ = [col.apply(unicode) for col in df_target if col == 'estado' or col == 'cidade']。不需要其他测试,我想。但是这种理解可能无法解决您提到的错误,并且它的操作更像是一个过滤器,而不是您的代码的实际复制和修改。 -
Pandas 没有
str列,是吗?一列,一个熊猫系列,可能有一个对象 dtype,并包含 Python 字符串元素。错误发生在哪里?在unidecode行中?难道该列也有数字?如果 object dtype 它可以包含各种项目,字符串,None或浮点数。 -
对不起@Jens,我将编辑我的问题以使其更清楚。 dt_target 是一个 pandas 数据框,此变量读取一个 CSV 文件,其中包含一列州、城市、国家和其他关于页面可视化的列。我正在尝试从 state 列和 city 列中删除重音,因为我有另一个数据集在此类数据中没有重音,我需要将两者交叉关联。我会试试这个理解!
-
@hpaulj 我正在使用的这个数据集很大,我不知道除了州名或城市名之外是否还有其他信息,我想可以退出一些浮动数据,但我希望过滤它与 isinstance() 一起使用。我在 jupyter notebook 中执行了完全相同的循环,并且效果很好,但是当我将它传递给 oop 代码时,我得到了这个错误。
-
如果 col 名称正确,isinstance 测试不会执行任何操作。
标签: python python-3.x pandas oop encode