Python 3.x 将配置单元SQL中的案例转换为Python 3.6 IF else station

Python 3.x 将配置单元SQL中的案例转换为Python 3.6 IF else station,python-3.x,conditional,hiveql,Python 3.x,Conditional,Hiveql,我试图从包含产品SKU的列中删除所有扩展。 长度不是恒定的。 唯一的规则是有三个连字符,例如: 101-090-7612-02 实际上,有些扩展名以第四个连字符开头,另一些扩展名以下划线开头 例如: 101-090-7612-02_爱 101-090-762-02-T 我能够通过Hive SQL实现这一点: (CASE WHEN sku RLIKE '_' THEN split(sku ,'[\_]')[0] ELSE concat(split(sku ,'[\-]')[0],'-',s

我试图从包含产品SKU的列中删除所有扩展。 长度不是恒定的。 唯一的规则是有三个连字符,例如: 101-090-7612-02 实际上,有些扩展名以第四个连字符开头,另一些扩展名以下划线开头 例如: 101-090-7612-02_爱 101-090-762-02-T

我能够通过Hive SQL实现这一点:

(CASE WHEN sku RLIKE '_'
  THEN split(sku ,'[\_]')[0]
  ELSE concat(split(sku ,'[\-]')[0],'-',split(sku ,'[\-]')[1],
   '-',split(sku ,'[\-]')[2],'-',split(sku ,'[\-]')[3])
  END) AS new_sku
之后,我可以根据新的sku进行分组,并获得所有聚合指标,如销售额、平均销售价格等

当然,我将在dataFrame上应用()函数

…现在我想把这个案例放到Python 3中


非常感谢您的帮助

您可以创建一个python函数,删除不需要的字符并将该函数应用于数据帧

d = {
    'sku': ["101-090-762-02-T", "101-090-7612-02_love"]

}

df = pd.DataFrame(data=d)
print df
new_df = df.applymap(lambda sku: "-".join(sku.split("_")[:-1]) if len(sku.split("-")) == 3 else "-".join(sku.split("-")[:-1]))
print new_df
您可以创建一个函数来处理此问题,也可以调用该函数

def remove_ext(sku):
    temp = sku.split("-")
    return "-".join(sku.split("_")[:-1]) if len(temp) == 3 else "-".join(temp[:-1])


d = {
    'sku': ["101-090-762-02-T", "101-090-7612-02_love"]

}

df = pd.DataFrame(data=d)

print df
new_df = df.applymap(lambda x: remove_ext(x))
print new_df

你说的python 3是什么意思?你是说派斯帕克?嗨,高兰。我的目标是在数据帧中使用它。我试图将其作为函数或lambda进行,并将其应用于列。谢谢