我目前正在尝试运行此解决方案,但我很难理解这里到底发生了什么。我得到的错误是:
line 39, in <module>
map_manufacturer_model()
TypeError: map_manufacturer_model() missing 1 required positional argument: 's'
在线阅读文档意味着我需要在调用对象之前实例化它?但我仍然不确定这意味着什么。我有我的数据框,我试着循环里面的所有东西,以得到正确的制造商和仪表型号?关于这个问题的任何指导都是非常明确的
测试csv:https://docs.google.com/spreadsheets/d/1nxLO7c2veCJOHp7Uw_3ZuUtYUvvMHtelEE-UW9QpY9g/edit#gid=0
gas_data = pd.read_csv(r'C:\Users\test.csv')
manufacturers = {'G4F0': 'FLN', 'G4K0': 'HWL', 'E6S1': 'LPG'}
meter_models = {'G4F0': {'1': 'G4SZV-1', '2': 'G4SZV-2'},
'G4K0': {'': 'BK-G4E'},
'E6S1': {'': 'G470'},
}
def map_manufacturer_model(s):
s = str(s)
model = 'unknown'
try:
manufacturer = manufacturers[s[:4]]
for k, m in meter_models[s[:4]].items():
if s[-4:].startswith(k):
model = m
break
except KeyError:
manufacturer = 'unknown'
return pd.Series({'New Meter Manufacturer': manufacturer,
'New Meter Model': model
})
gas_data[['New Meter Manufacturer', 'New Meter Model']] = gas_data['New Serial Number'].apply(
map_manufacturer_model)
map_manufacturer_model()
这个问题是因为我再次调用了这个函数,即使它已经在apply(map_manufacturer_model)中被调用了
这与实例化对象无关。很明显,你误解了解决方案的工作原理
将名为
map_manufacturer_model
的函数对象(不是类名)作为参数传递给.apply(..)
,以便后者可以在库的函数实现中调用map_manufacturer_model
。所以你不应该是那个调用map_manufacturer_model
的人所以去掉最后一行
相关问题 更多 >
编程相关推荐