你的代码中存在一些问题。首先,在 `__init__()` 方法中,你在定义实例属性时应该使用 `self.` 前缀,例如 `self.csv_path`、`self.file` 等。其次,在 `format_service()` 方法中,你需要使用 `re.findall()` 函数前加上 `re.` 前缀,指定使用正则表达式模块下的 `findall()` 函数。
此外,在 `format_file()` 方法中,你可以直接调用 `format_service()` 方法来处理每个字符串。不需要使用 `lambda` 表达式。
最后,在 `insert()` 方法中,你需要将 `df` 作为参数传递给 `InsertCsv` 类,并将其解包赋值给相应的实例属性。
下面是修改后的代码示例:
import os
import pandas as pd
import re
class InsertCsv:
def __init__(self):
self.csv_path = os.path.join(os.getcwd(), "csv")
self.file = None
self.min = None
self.max = None
self.sum = None
def format_service(self, s):
if '箱' in s:
return '箱{}号'.format(re.findall(r'\d+', s)[0])
else:
return s
def format_file(self):
self.file = self.file.apply(self.format_service)
print(self.file)
def insert(self, df):
self.file, self.min, self.max, self.sum = df
self.format_file()
# 以下是测试示例
df = pd.DataFrame({'服务项目': ['11箱', '212号箱', '336号车箱', '箱26', '78号车', '76车']})
data = df, 0, 0, 0
ins = InsertCsv()
ins.insert(data)
在这个示例中,我们修正了类中的问题,并添加了一个测试示例。该示例创建了一个数据框 `df`,然后将其作为参数传递给 `InsertCsv` 类的 `insert()` 方法,最终输出了处理后的数据框。
希望这个修改后的代码能够满足你的需求。如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |