首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将顺序条件脚本转换为一般过程

将顺序条件脚本转换为一般过程
EN

Stack Overflow用户
提问于 2020-12-07 10:38:22
回答 1查看 18关注 0票数 0

目前,我正致力于推广具有多种条件的顺序管道;假设我有一个水果数据,描述苹果、香蕉和梨及其相应的重量和颜色。

代码语言:javascript
复制
import pandas as pd
fruits = pd.DataFrame({'Fruit': ['Apple', 'Apple', 'Banana', 'Pear' 'Pear', 'Banana'],
                      'Weight': [42, 64, 82, 74, 51, 71],
                      'Color': ['Red', 'Green', 'Yellow', 'Green' 'Red', 'Yellow']})

我想用全部或部分特征将水果分类为‘红_大_苹果’、‘绿_大_苹果’、‘红_小_苹果’、‘绿色_小_苹果’、‘红_大_梨’。等。

代码语言:javascript
复制
for i in list(fruits.index):
    if fruits.loc[i, 'Fruit'] == 'Apple':
        if fruits.loc[i, 'Weight'] < 50:
            if fruits.loc[i, 'Color'] == 'Red':
                fruits.loc[i, 'Group'] = 'Red_small_apples'
ect.

现在,假设我有一个更复杂的顺序条件管道,可能需要在几周内实现一个全新的、完全不同的顺序条件管道。

其主要思想是创建一个组合df/hashmap,它将与类中的某个函数通信(我将创建)来提取给定结果的最后一组--但是当我构建df/hashmap (一个复杂的任务本身)时,我理解它将有多大(~2000行/组合)。

我的问题是,怎样才是处理这个问题的最佳方法?

在发生内部更改或新管道的情况下,分组方式如下:

实现computationally

  • Easiest 的最快的

哪种方式是最广义的,这样我就不需要在这种情况下改变类和/或类函数了?

  1. df/hashmap
  2. specific function
  3. other

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-12-07 11:05:23

您所描述的可以使用如下所示的应用程序来实现:

代码语言:javascript
复制
def classify(x):
    if x.Weight > 50:
        return f"{x.Color}_big_{x.Fruit}"
    else:
        return f"{x.Color}_small_{x.Fruit}"

fruits['class'] = fruits.apply(classify, axis=1)

这就产生了:

代码语言:javascript
复制
Fruit   Weight  Color   class
0   Apple   42  Red Red_small_Apple
1   Apple   64  Green   Green_big_Apple
2   Banana  82  Yellow  Yellow_big_Banana
3   Pear    74  Green   Green_big_Pear
4   Pear    51  Red Red_big_Pear
5   Banana  71  Yellow  Yellow_big_Banana

通过修改classify函数,可以进一步实现更复杂的条件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65180134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档