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, np.nan, 300, 500, 100, 90, np.nan, 400, 200],
'商品名':['泳裤','泳镜','泳帽','泳裤','泳镜','泳帽','泳裤','泳镜','泳帽','泳裤','泳镜','泳帽']
}
df = pd.DataFrame(dict)
print(df)
如何达到下面这个效果
店名 | 姓名 | 泳裤销售额大于200的数量 | 泳裤销售额大于300的数量 |
---|---|---|---|
1店 | 张三 | - | - |
- | 王五 | - | - |
2店 | 李四 | - | - |
3店 | 赵六 | - | - |
- | 乔七 | - | - |
df['>=200'] = np.where((df['销售额'] >= 200 and df['商品名'] == '泳裤'),1, 0)
直接用上面这个报错,如何破解?
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
分三个数据,进行分组求和:第一个所有的分组聚合,第二个筛选大于200的数据聚合,第三个筛选大于300的聚合
然后三个mege就可以实现,(以第一个作为主,how=“left")
泳裤销售额大于两百的数量是啥啊,减法,销售额减200吗?
df['>=200'] = np.where((df['销售额'] >= 200 and df['商品名'] == '泳裤'),1, 0)
直接用上面这个报错,如何破解?
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().