抱歉,我浏览了许多其他StackOverflow线程,但没有找到我想要的线程。
我正在尝试使用熊猫来解决此问题,但我不一定需要熊猫解决方案。我创建了一个熊猫数据框:
df = pd.DataFrame({'Provider' : ['Prov1', 'Prov1', 'Prov1', 'Prov1', 'Prov2', 'Prov2', 'Prov2'],
'Field' : ['Chemistry', 'Biology', 'Chemistry', 'Biology', 'Biology', 'Engineering', 'Biology'],
'Downloads' : [10, 12, 10, 8, 4, 20, 14]})
我要做的基本上是按多列过滤。伪代码为:
#if provider = 'Prov1':
#for field in provider:
#sum downloads for these criteria
理想情况下,我的输出将是一个元组,类似于(Chemistry, 20), (Biology, 20)
。
我尝试使用pandas.loc和pandas.groupby进行了多种方法,但是这些方法似乎都允许进行一级过滤。意思是,我可以选择一列作为过滤依据。但是我不知道如何按多个级别进行过滤。
答案 0 :(得分:1)
您可以在df[df['Provider']=='Prov1']
后接groupby
和sum
使用过滤器:
result = df[df['Provider']=='Prov1'].groupby('Field', as_index=False).sum().values.tolist()
结果是列表列表:
[['Biology', 20], ['Chemistry', 20]]