Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-按多个列名筛选_Python_Pandas_Pandas Groupby - Fatal编程技术网

Python-按多个列名筛选

Python-按多个列名筛选,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,很抱歉,我查看了许多其他StackOverflow线程,但没有找到一个是我正在寻找的 我试图用熊猫来解决这个问题,但我不一定需要熊猫的解决方案。我已经创建了一个数据框: df = pd.DataFrame({'Provider' : ['Prov1', 'Prov1', 'Prov1', 'Prov1', 'Prov2', 'Prov2', 'Prov2'], 'Field' : ['Chemistry', 'Biology', 'Chemistry', 'Biol

很抱歉,我查看了许多其他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
理想情况下,我的输出是一个元组,类似于
(化学,20),(生物学,20)


我尝试过使用pandas.loc、pandas.groupby的各种方法,但这些方法似乎都允许一级过滤。也就是说,我可以选择一列进行筛选。但我不知道如何按多个级别进行过滤

您可以通过
df[df['Provider']=='Prov1']
使用过滤器,然后是
groupby
sum

result = df[df['Provider']=='Prov1'].groupby('Field', as_index=False).sum().values.tolist()
结果是列表列表:

[['Biology', 20], ['Chemistry', 20]]
您是否尝试了df.groupby(['Provider','Field'],as_index=False).sum()?