【发布时间】:2021-10-13 21:08:27
【问题描述】:
我目前正在尝试运行此解决方案,但我无法理解此处实际发生的情况。我得到的错误是:
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()
【问题讨论】:
-
问题出在最后一行,你怎么又调用方法了?
-
通过在线阅读文档意味着我需要在调用之前实例化一个对象?仅当您调用的是类方法而不是普通函数时。
-
除了@Barmar 所说的,你的函数还接受了一个你没有传递给它的字符串参数。
标签: python python-3.x pandas