Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 是否可以根据groupby的结果执行groupby?_Python_Python 2.7_Pandas_Pandas Groupby - Fatal编程技术网

Python 是否可以根据groupby的结果执行groupby?

Python 是否可以根据groupby的结果执行groupby?,python,python-2.7,pandas,pandas-groupby,Python,Python 2.7,Pandas,Pandas Groupby,我不认为我需要共享整个数据帧,但基本上,这是有问题的代码行(当然,熊猫已经被导入) 输出为: >>> divstack Division Stack 6U F 3/3/03 2.66 3/6/03 4.81 Cycle 13.89 7-8 F 3/3/03 2.41 3/6/03 2.68 Cycle 7.71 9-10 F

我不认为我需要共享整个数据帧,但基本上,这是有问题的代码行(当然,熊猫已经被导入)

输出为:

>>> divstack
Division  Stack 
6U F      3/3/03     2.66
          3/6/03     4.81
          Cycle     13.89
7-8 F     3/3/03     2.41
          3/6/03     2.68
          Cycle      7.71
9-10 F    3/3/03     2.13
          3/6/03     2.75
          Cycle      6.94
Name: Time, dtype: float64
我已经抓住了Emma最快的时间是
2.13
,多亏了这一行代码:

emma=df[df['Competitor']=='emma Slabach'].groupby(['Competitor'])['Time'].min()

输出为:

>>> emma
Competitor
Emma Slabach    2.13 
Name: Time, dtype: float64
但是,我如何修改前面的第一行代码,以具体获得她最快时间出现的时间的
分割
堆栈
(以及
时间
)?(第9-10F部分和烟囱3/3/03)

我不认为函数是必要的,但是有没有一种方法可以在我得到的第一个groupby输出(
divstack
)的基础上执行另一个groupby,以进一步“最小化”并获得最快的时间? 或者我可以在
divstack
中的某个地方输入
emma
,以获得当时发生的分区/堆栈吗


我需要将除法、堆栈和时间存储到
divstack

我想您正在寻找idxmin函数

应该为每个竞争对手提供你想要的。如果需要,只需过滤Emma:
result.loc[result.Competitor==='Emma Slabach']

In [6]: df = pd.DataFrame([['Emma Slabach', '6U F',  '3/3/03', 2.66], ['Emma Slabach', '7-8 F', '3/3/03', 2.41], ['Roger', '6U F', '3/3/03', 3.80]], columns=['Competitor', 'Div
   ...: ision', 'Stack', 'Time'])

In [7]: df
Out[7]: 
     Competitor Division   Stack  Time
0  Emma Slabach     6U F  3/3/03  2.66
1  Emma Slabach    7-8 F  3/3/03  2.41
2         Roger     6U F  3/3/03  3.80

In [8]: df.loc[df.groupby('Competitor').Time.idxmin()]
Out[8]: 
     Competitor Division   Stack  Time
1  Emma Slabach    7-8 F  3/3/03  2.41
2         Roger     6U F  3/3/03  3.80

给定
divstack
,您可以使用
.loc
min()
检索完整的多索引项:


你不知道怎么过滤艾玛吗?当我尝试
df.loc[df.groupby(['Competitor']=='Emma Slabach').Time.idxmin()]
时,我得到了
KeyError:False
以及数据帧中的其他列,但我特别需要除法、堆栈和Time@zainy我刚刚更新了我的答案:命名groupby结果,然后过滤Emma的结果。这更清楚吗?您只能按列分组。您不能按表达式分组(我不确定这是什么意思)<代码>['Competitor']=='Emma Slabach'是一个表达式,而不是dataframeYeah中现有的列。这很有意义,谢谢。只是看看我是如何删除输出中的一些列!顺便问一下,你知道为什么
时间
列的名称在你的代码和我的原始代码中都没有出现吗?不客气!当您对单个变量应用聚合函数时,您将得到一个
系列
作为输出。它只是一个向量,所以它不会被名称引用,就像在多列数据帧中一样。但是,正如您在输出中看到的,它仍然被称为
时间
。您还可以使用
divstack.name
(您将看到它等于
'Time'
)。
result = df.loc[df.groupby('Competitor').Time.idxmin()]
In [6]: df = pd.DataFrame([['Emma Slabach', '6U F',  '3/3/03', 2.66], ['Emma Slabach', '7-8 F', '3/3/03', 2.41], ['Roger', '6U F', '3/3/03', 3.80]], columns=['Competitor', 'Div
   ...: ision', 'Stack', 'Time'])

In [7]: df
Out[7]: 
     Competitor Division   Stack  Time
0  Emma Slabach     6U F  3/3/03  2.66
1  Emma Slabach    7-8 F  3/3/03  2.41
2         Roger     6U F  3/3/03  3.80

In [8]: df.loc[df.groupby('Competitor').Time.idxmin()]
Out[8]: 
     Competitor Division   Stack  Time
1  Emma Slabach    7-8 F  3/3/03  2.41
2         Roger     6U F  3/3/03  3.80
divstack.loc[divstack.eq(divstack.min())]

Division  Stack 
9-10 F    3/3/03    2.13
Name: Time, dtype: float64