pandas 属性错误:即使对象的dtype是字符串,“int”对象也没有属性“split”

z2acfund  于 2023-06-20  发布在  其他
关注(0)|答案(2)|浏览(224)

我有一个名为'state_lists'的列表,我有一个名为'ADDRESS'的列的dataframe。我想在我的数据框中创建一个新列
1.循环访问ADDRESS列
1.如果在ADDRESS列中找到“state_lists”中的状态,则将该状态提取到另一个名为STATE的列中
我用下面的代码,之前和和它的工作,但现在它显示上面的错误

df["STATE"] = df["ADDRESS"].map(lambda x: state if ( state:=x.split()[-1]) in state_lists else np.nan)

那现在有什么问题呢?我已经检查了Address列的数据类型,它是一个对象。这段代码以前工作过不知道现在发生了什么?
我确保我用一个对象替换了所有的空值,仍然弹出相同的错误消息

scyqe7ek

scyqe7ek1#

IIUC,您可以用途:

import re

pat = fr'\b({"|".join(map(re.escape, state_lists))})\b'

df["STATE"] = df["ADDRESS"].str.extract(pat, expand=False)
ozxc1zmp

ozxc1zmp2#

在你的领域里似乎有int。在应用split()函数之前,可以添加一个条件语句来检查ADDRESS中的值是否是string的示例。您可以将其实现为:

import numpy as np

def extract_state(address):
    if isinstance(address, str):
        state = address.split()[-1]
        return state if state in state_lists else np.nan
    else:
        return np.nan

df["STATE"] = df["ADDRESS"].map(extract_state)

相关问题