我正在运行下面的代码并收到主题错误;但是我现在正在测试的数据集中没有浮点数(有空白),所以不确定为什么会抛出该错误?更何况有一个 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])
通过使用
.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])
如果没有导致此错误的实际数据,则很难缩小问题范围。尽管如此,方法
isdigit
应该能够解释浮点数,因为这是该方法的全部要点,但它们必须采用 string
格式(isdigit
的 python 文档),因此我建议您转换 item
到字符串(如果单个条目恰好是浮点类型)。我想你应该尝试 if str(item).isdigit():
但如果没有 df['Vehicle Number']
的实际条目,就不可能明确地说出问题是什么。