python - 自动对数组中的元素进行分类

标签 python arrays python-3.x pandas

我正在为给定位置构建植被类型的行程。数据以 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/

相关文章:

python - 在 python 3 上使用 tkinter 打开图像

python - 在 Linux 上使用更新版本的 Python

python - 是否可以做一个没有边框的 wx.TextCtrl?

python - 按时间顺序重新排列包含日期的列表

python - Python 中是否有用于大精度复数的库?

python - 如何查看dict.__getitem__()方法的源码

javascript - 为什么使用 push 或任何数组方法修改原始数组但将其分配给其他东西却没有?

java - 快速排序整数数组的数组

javascript - 将数组部分映射到新数组

python - 是否可以搜索并替换为 "any"个字符的字符串?