目前,我正致力于推广具有多种条件的顺序管道;假设我有一个水果数据,描述苹果、香蕉和梨及其相应的重量和颜色。
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']})我想用全部或部分特征将水果分类为‘红_大_苹果’、‘绿_大_苹果’、‘红_小_苹果’、‘绿色_小_苹果’、‘红_大_梨’。等。
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
哪种方式是最广义的,这样我就不需要在这种情况下改变类和/或类函数了?
谢谢!
发布于 2020-12-07 11:05:23
您所描述的可以使用如下所示的应用程序来实现:
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)这就产生了:
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函数,可以进一步实现更复杂的条件。
https://stackoverflow.com/questions/65180134
复制相似问题