Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 自动对数组中的元素进行分类_Python_Arrays_Python 3.x_Pandas - Fatal编程技术网

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

Python 自动对数组中的元素进行分类,python,arrays,python-3.x,pandas,Python,Arrays,Python 3.x,Pandas,我正在为给定的地点建立一个植被类型的行程。数据以CSV的形式传递给我,我需要一种方式,可以自动将一列中的项目重新分类到我提供的更广泛的类中。我已经可以用pandas读取数据,进行一些整理,然后将数据帧写入一个新文件 然而,鉴于我获得的专栏内容如下: species = ['maple', 'oak', holly, 'sawgrass', 'cat tails'...... 'birch'] 我希望能够使用另一个列表自动地将其重新分类为广泛的类别,如: VegClass = ['Tree',

我正在为给定的地点建立一个植被类型的行程。数据以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')
但是,如果物种列表变得非常大,这需要我编写大量代码,而且我不认为它对大型数据集非常有效

有没有更直接的方法?我知道我需要手动列出所有物种(在单独的类别中),例如:


但我只需要做一次就可以建立一个物种名称词典。我期待更多的数据,所以将来可能需要添加一两个额外的物种名称,但如果我能快速处理大量数据,这不会被认为是太耗时。

我不知道我是否了解你,但因为你必须创建某种形式的关联列表

植物型 橡树 锯草 kkk|布什 ... 只需创建一个哈希表并从哈希表中获取类型。
您可以从外部文件读取该表,这样它就不会在程序中硬编码。

您需要为不同的项创建一个分类器映射的dict,例如

classifier = {'oak': 'Tree', 
              'maple': 'Tree', 
              'holly': 'Tree', 
              'sawgrass': 'Grass',
              'cat tails': 'Bush', 
              'birch': 'Tree'}
然后,获得一列组就像调用列一样简单

>>> 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)

你需要一本像这样的字典

VegClass = {'oak': 'Tree', 'seagrass': 'Grass'}
df['class'] = df['species'].map(VegClass)

你需要一本指定{'oak':'Tree'}等的字典,然后你可以用它来映射你的专栏。虽然我理解dict背后的想法,但它是我以前从未尝试过使用的东西,所以我不太确定从哪里开始,尤其是在熊猫内部。这是一个非常有用的例子
VegClass = {'oak': 'Tree', 'seagrass': 'Grass'}
df['class'] = df['species'].map(VegClass)