Python 熊猫的性能由按键决定

Python 熊猫的性能由按键决定,python,pandas,performance,dataframe,pandas-groupby,Python,Pandas,Performance,Dataframe,Pandas Groupby,我必须对一个数据帧进行分组,并使用键作为输入参数进行更多的计算。这样我发现了一些奇怪的行为。 分组的时间是确定的,获取密钥的时间也是确定的。但如果我同时执行这两个步骤,则需要24倍的时间 是我用错了还是有其他方法可以得到唯一的参数对和它们的所有索引 以下是一些简单的例子: import numpy as np import pandas as pd def test_1(df): grouped = df.groupby(['up','down']) return groupe

我必须对一个数据帧进行分组,并使用键作为输入参数进行更多的计算。这样我发现了一些奇怪的行为。 分组的时间是确定的,获取密钥的时间也是确定的。但如果我同时执行这两个步骤,则需要24倍的时间

是我用错了还是有其他方法可以得到唯一的参数对和它们的所有索引

以下是一些简单的例子:

import numpy as np
import pandas as pd

def test_1(df):
    grouped = df.groupby(['up','down'])
    return grouped

def test_2(grouped):
    keys = grouped.groups.keys()
    return keys

def test_3(df):
    keys = df.groupby(['up','down']).groups.keys()    
    return keys

def test_4(df):
    grouped = df.groupby(['up','down'])    
    keys = grouped.groups.keys()
    return keys

n = np.arange(1,10,1)
df = pd.DataFrame([],columns=['up','down'])
df['up'] = n
df['down'] = n[::-1]

grouped = df.groupby(['up','down'])

%timeit test_1(df)
169 µs ± 12.5 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

%timeit test_2(grouped)
1.01 µs ± 70.2 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

%timeit test_3(df)
4.36 ms ± 210 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit test_4(df)
4.2 ms ± 161 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
提前感谢您的评论或想法