多品类划分多价格段

61 阅读2分钟

如果不同的品类具有不同的价格段划分需求,你可以使用不同的价格段划分规则来处理每个品类。这种情况下,你可能需要定义不同的 binslabels 列表,然后根据每个品类的需求进行处理。下面我将演示如何根据每个品类的不同需求来划分价格段。

假设你有一个示例的DataFrame df,包含品类(category)和价格(price):

import pandas as pd

# 示例DataFrame
data = {
    'category': ['A', 'A', 'B', 'B', 'A', 'B', 'A', 'B', 'B', 'A'],
    'price': [50, 120, 130, 180, 90, 160, 200, 70, 190, 110]
}

df = pd.DataFrame(data)
print(df)

现在我们定义不同品类的价格段划分规则,并按照每个品类的规则来划分价格段:

# 定义不同品类的价格段划分规则
category_bins = {
    'A': [0, 100, 150, float('inf')],
    'B': [0, 120, 180, float('inf')]
}

category_labels = {
    'A': ['[0,100)', '[100,150)', '150+'],
    'B': ['[0,120)', '[120,180)', '180+']
}

# 根据不同品类的价格段划分规则处理数据
def categorize_price(row):
    bins = category_bins[row['category']]
    labels = category_labels[row['category']]
    return pd.cut([row['price']], bins=bins, labels=labels, right=False)[0]

# 添加新的列 price_range
df['price_range'] = df.apply(categorize_price, axis=1)

print(df)

在这个例子中:

  • category_binscategory_labels 是字典,每个键对应一个品类,值是该品类对应的价格段划分规则和标签。
  • categorize_price 函数根据每行数据的品类找到对应的价格段划分规则,并使用 pd.cut() 函数来划分价格段,并返回标签。
  • df['price_range'] 是根据 categorize_price 函数的结果创建的新列,包含了每个产品的价格段标签。

运行以上代码后,你会得到一个包含了按不同品类划分的价格段的DataFrame。这种方法能够灵活地根据每个品类的需求定义不同的价格段划分规则。