我正在为给定位置构建植被类型的行程。数据以 CSV 形式传递给我,我希望有一种方法可以自动将一列中的项目重新分类为我提供的更广泛的类别。我已经可以用 pandas 读取数据,做一些内务处理,然后将数据帧写到一个新文件中。
但是,鉴于我提供了这样的列:
species = ['maple', 'oak', holly, 'sawgrass', 'cat tails'...... 'birch']
我希望能够使用另一个列表自动将它们重新分类为广泛的类别,例如:
VegClass = ['Tree', 'Bush', 'Grass']
我知道做到这一点的唯一方法是迭代物种列表,其方式类似于:
out = []
for i in species:
if species[i]=='Oak':
out.append('Tree')
但是,如果物种列表变得非常大,这将需要我编写大量代码,并且我不认为它对于大型数据集会非常有效。
有更直接的方法吗?我知道我需要手动列出所有物种(在单独的类中),例如:
TreeSpecies = ['oak'....'birch']
GrassSpecies = ['Sawgrass....']
但我只需要这样做一次就可以建立一个物种名称字典。我期待更多数据,因此将来可能需要添加一两个额外的物种名称,但如果我可以快速处理大量数据,这不会被认为太耗时。
最佳答案
您需要为不同的项目创建一个分类器映射字典,例如,
classifier = {'oak': 'Tree',
'maple': 'Tree',
'holly': 'Tree',
'sawgrass': 'Grass',
'cat tails': 'Bush',
'birch': 'Tree'}
然后获取一列组就像调用 map
一样简单在您的专栏上。
>>> df.species.map(classifier)
0 Tree
1 Tree
2 Tree
3 Grass
4 Bush
5 Tree
Name: species, dtype: object
这样你就可以设置一个新列
df['classification'] = df.species.map(classifier)
关于python - 自动对数组中的元素进行分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42682864/