我正在处理鸟类分类,需要标准化通用名称。标准化的文件由林地公会物种组成,由一列包含旧的通用名称组成。第二个文件是一个字典,列出旧的通用名称(键)和新的通用名称(值)。例如,
dict = {'BLUE GROUSE' : "DUSKY GROUSE", 'PLAIN TITMOUSE' : ["OAK TITMOUSE", 'JUNIPER TITMOUSE"], 'RUBY-THR. HUMMINGBIRD' : 'RUBY-THROATED HUMMINGBIRD'}
我想用新名称替换旧名称,并使用replace:
成功完成了此操作WoodlandGld["CommonName"].replace(StdCommonNames, inplace=True)
如果一个物种被分裂,正如普通山雀分裂成橡树和杜松山雀所证明的那样,该值是一个列表而替换取代了第一次出现(这是有道理的)。
113 PYGMY NUTHATCH
114 TUFTED TITMOUSE
115 BLACK-CRESTED TITMOUSE
116 OAK TITMOUSE
117 BLACK-CAPPED CHICKADEE
有没有办法不仅可以替换第一次出现(Oak Titmouse),还可以在遇到钥匙时添加Juniper Titmouse? 替换正确的说法来实现这个目标吗?
答案 0 :(得分:0)
f1 = ['BLUE GROUSE', 'PLAIN TITMOUSE', 'RUBY-THR. HUMMINGBIRD']
f2 = {'BLUE GROUSE' : 'DUSKY GROUSE',
'PLAIN TITMOUSE' : ['OAK TITMOUSE', 'JUNIPER TITMOUSE'],
'RUBY-THR. HUMMINGBIRD' : 'RUBY-THROATED HUMMINGBIRD'
}
for k,v in zip(f2.keys(), f2.values()):
if type(v) == str:
f1[f1.index(k)] = v
else:
f1[f1.index(k)] = v[0]
f1.extend(v[1:])
f1.sort()
print "Standardized list:", f1
输出:
Standardized list: ['DUSKY GROUSE', 'JUNIPER TITMOUSE', 'OAK TITMOUSE', 'RUBY-THROATED HUMMINGBIRD']
注意:WoodlandGld的类型不清楚,即字典或什么,因此如果您想要更精确的帮助,请添加更多信息。
答案 1 :(得分:0)
如果你想用dict中的值(一个元素或一个列表)替换名称,
name = ['BLUE GROUSE', 'PLAIN TITMOUSE', 'RUBY-THR. HUMMINGBIRD', 'OTHER KINDS']
dict = {'BLUE GROUSE' : 'DUSKY GROUSE',
'PLAIN TITMOUSE' : ['OAK TITMOUSE', 'JUNIPER TITMOUSE'],
'RUBY-THR. HUMMINGBIRD' : 'RUBY-THROATED HUMMINGBIRD'
}
for k in name:
if k in dict:
name[name.index(k)] = dict[k]
print ("Standardized list:\n", name)
输出
Standardized list:
['DUSKY GROUSE', ['OAK TITMOUSE', 'JUNIPER TITMOUSE'], 'RUBY-THROATED HUMMINGBIRD', 'OTHER KINDS']