如何用pandas进行双索引数据的条件分组计算?

import pandas as pd
import numpy as np

dict = {
    '店名': ['1店', '2店', '1店', '3店', '1店', '2店', '3店', '3店', '2店', '2店', '1店', '3店'],
    '姓名': ['张三', '李四', '王五', '赵六', '张三', '李四', '赵六', '乔七', '李四', '李四', '王五', '乔七'],
    '销售额': [200, 150, 200, 300, 200, 300, 500, 100, 90, 500, 400, 200],
}

达到下面这个表格的效果

店名姓名销售额大于200的数量销售额大于300的数量
1店张三--
-王五--
2店李四--
3店赵六--
-乔七--

import pandas as pd
import numpy as np

dict = {
    '店名': ['1店', '2店', '1店', '3店', '1店', '2店', '3店', '3店', '2店', '2店', '1店', '3店'],
    '姓名': ['张三', '李四', '王五', '赵六', '张三', '李四', '赵六', '乔七', '李四', '李四', '王五', '乔七'],
    '销售额': [200, 150, 200, 300, 200, 300, 500, 100, 90, 500, 400, 200],
}

df1 = pd.DataFrame(dict)
# print(df1)
df1['销售额大于200的数量'] = df1['销售额'].apply(lambda x : 1 if x>200 else 0)
df1['销售额大于300的数量'] = df1['销售额'].apply(lambda x : 1 if x>300 else 0)
# print(df1)

df2 = df1[['店名','姓名','销售额大于200的数量','销售额大于300的数量']]

df3 = df2.groupby(['店名','姓名']).sum()
print(df3)

上一位答主的代码运行结果如下:

img

如果想要['店名', '姓名', '销售额大于200的数量', '销售额大于300的数量']在同一行,可以如下设置
df3 = df2.groupby(['店名', '姓名'], as_index=False).sum()
print(df3)
print(df3.columns)
运行结果如下:

img

如果加上两列值的判断,比如下面这个例子,我要统计商品名为“泳裤”的销售额大于200的数量,如何操作?

dict = {
    '店名': ['1店', '2店', '1店', '3店', '1店', '2店', '3店', '3店', '2店', '2店', '1店', '3店'],
    '姓名': ['张三', '李四', '王五', '赵六', '张三', '李四', '赵六', '乔七', '李四', '李四', '王五', '乔七'],
    '销售额': [200, 150, 200, 300, np.nan, 300, 500, 100, 90, np.nan, 400, 200],
    '商品名':['泳裤','泳镜','泳帽','泳裤','泳镜','泳帽','泳裤','泳镜','泳帽','泳裤','泳镜','泳帽']
}