pandas GroupBy级别比列上的GroupBy慢得多

时间:2018-01-24 17:02:25

标签: python pandas pandas-groupby

我注意到Level上的pandas groupby比列上的groupby慢得多:

t1 = pd.datetime.now()
for name, group in df.groupby(level=['Exchange', 'LongID']):
    name
    group
print(pd.datetime.now() - t1)

在[5]:0:44:07.798892

df = df.reset_index()
t1 = pd.datetime.now()
for name, group in df.groupby(by=['Exchange', 'LongID']):
    name
    group
print(pd.datetime.now() - t1)

在[5]:0:00:21.025000

Groupby索引疯狂。任何人都可能知道为什么会这样?

修改
数据是从csv读取的,我不能在这里发布,但是你可以编写一些数据,差别仍然存在:

exchanges = pd.read_excel("https://www.iso20022.org/sites/default/files/ISO10383_MIC/ISO10383_MIC.xls")['MIC'].unique()[0:50]
dates = pd.date_range('2017-01-01', '2018-01-01')
ids = pd.read_html("https://en.wikipedia.org/wiki/List_of_S%26P_500_companies", header=0)[0]['Ticker symbol'].unique()

df = pd.DataFrame(index=pd.MultiIndex.from_product([dates, exchanges, ids], names=['Date', 'Exchange', 'LongID']))

groupby索引使用5秒而groupby列使用3.你可以增加数据框的大小,差异更有意义。

0 个答案:

没有答案