python中的排列组合方案标注

图片说明

这里有一张表格,想要根据三个变量(性别,年龄,省份)来排列不同组合:
性别有2种情况:男,女
年龄有5种情况:18~28,28~38,38~48,48~58,58~60
省份有4种情况:'福建','广东','江西','云南'
以上三种变量能够组成40个组合。

现在要增加一个字段(组合方案),假设组合情况为:“男,18~28,福建”则在“组合方案”这一列标注1,以此类推。
在python中如果用for循环要写40种情况,有没有简便的方法能完成上面的需求?(小白一枚,请大神帮忙写详细点,谢谢)

  1. df['组合方案'] = df['年龄']+''+df['性别']+''+df['省份']#列出所有方案
  2. set(list(df['组合方案'])) #列出不重复的不同组合方案,在用range给不同方案附上不同值,之后用映射给每个方案列名序号
sex=("男",“女”)
age=("18~28","28~38","38~48","48~58","58~60")
provinces=('福建','广东','江西','云南')

fun checkCombination(combination){
     items=combination.split(",")

        if  len(items)!=3{
            return  0 
        }

        if items[0].trim() in sex and items[1] in age and items[2] in provinces{
           return 1
        }

        return 0


}
# -*- coding: UTF-8 -*-

provi = ['福建','广东','江西','云南' ]
gender = [ '男', '女' ]

def getIndex(g, age, p):
    ai = (age - 18) / 10
    gi = gender.index(g)
    pi = provi.index(p)
    return ai * len(provi) * len(gender) + pi * len(gender) + gi + 1

i = getIndex('男', 21, '福建')
print(i)
i = getIndex('女', 21, '福建')
print(i)
i = getIndex('男', 46, '江西')
print(i)
i = getIndex('女', 60, '云南')
print(i)

1
2
21
40