属性错误:“float”对象没有属性“isdigit”,df 中没有浮点数

问题描述 投票:0回答:2

我正在运行下面的代码并收到主题错误;但是我现在正在测试的数据集中没有浮点数(有空白),所以不确定为什么会抛出该错误?更何况有一个 else 语句来处理 item.isdigit() 不为 True 的情况?

for item in df['Vehicle Number']:
    if item.isdigit():
        if item[0] == "0":
            df['Vehicle Number'] = df['Vehicle Number'].replace([item], item[1:4])
    elif re.search(pattern, item):  
        match = re.search(pattern, item)
        idx = match.span() # determine the start/finish of the pattern
        start = idx[0]+2
        end = idx[1]
            
        if item[start] == "0":
            df['Vehicle Number'] = df['Vehicle Number'].replace([item], item[start+1:end])
        else:
            df['Vehicle Number'] = df['Vehicle Number'].replace([item], item[start:end])
python pandas attributeerror
2个回答
0
投票

通过使用

.astype(str)
将“车辆号码”列转换为字符串,您可以确保所有值都被视为字符串,然后您可以应用
.isdigit()

等字符串方法
# Convert 'Vehicle Number' column to string
df['Vehicle Number'] = df['Vehicle Number'].astype(str)

pattern = r'\d{2}-\d{2}'  # Example pattern, change it according to your actual pattern

for item in df['Vehicle Number']:
    if item.isdigit():
        if item[0] == "0":
            df['Vehicle Number'] = df['Vehicle Number'].replace([item], item[1:4])
    elif re.search(pattern, item):  
        match = re.search(pattern, item)
        idx = match.span() # determine the start/finish of the pattern
        start = idx[0]+2
        end = idx[1]
            
        if item[start] == "0":
            df['Vehicle Number'] = df['Vehicle Number'].replace([item], item[start+1:end])
        else:
            df['Vehicle Number'] = df['Vehicle Number'].replace([item], item[start:end])

0
投票

如果没有导致此错误的实际数据,则很难缩小问题范围。尽管如此,方法

isdigit
应该能够解释浮点数,因为这是该方法的全部要点,但它们必须采用
string
格式(isdigit
python 文档),因此我建议您转换
item 
到字符串(如果单个条目恰好是浮点类型)。我想你应该尝试
if str(item).isdigit():
但如果没有
df['Vehicle Number']
的实际条目,就不可能明确地说出问题是什么。

© www.soinside.com 2019 - 2024. All rights reserved.