2014-08-28 128 views
4

偉大的以下工作:pandas.merge莫名其妙地慢

times1h = pandas.DatetimeIndex(start='2010-01-01', end='2014-01-01', freq='1h') 
times10min = pandas.DatetimeIndex(start='2010-01-01', end='2014-01-01', freq='10T') 
wind=pandas.DataFrame({'wind':0}, index=times1h) 
power=pandas.DataFrame({'power':0}, index=times10min) 
%timeit pandas.merge(wind, power, how='inner', left_index=True, right_index=True) 

100 loops, best of 3: 5.2 ms per loop 

以下是莫名其妙地慢。我只是做了第一個數據幀非唯一的時間戳,並將它作爲一列,而不是作爲一個指標:

times1h = pandas.DatetimeIndex(start='2010-01-01', end='2014-01-01', freq='1h') 
times10min = pandas.DatetimeIndex(start='2010-01-01', end='2014-01-01', freq='10T') 
wind=pandas.DataFrame({'time':pandas.concat([pandas.Series(times1h),  pandas.Series(times1h)]), 'wind':0}) 
power=pandas.DataFrame({'power':0}, index=times10min) 
%timeit pandas.merge(wind, power, how='inner', left_on='time', right_index=True) 

1 loops, best of 3: 16.6 s per loop 

這是爲什麼這麼多慢?我能做些什麼嗎?

我想獲得一組(x,y)點的功率曲線擬合。

我用熊貓0.13.1,因爲它是包含在WinPython的一個:)

+0

你需要顯示輸入幀(或者至少是df.info()) – Jeff 2014-08-28 13:44:37

+0

是的,我在我的更新中提供了df.info()等。 也許我需要做一個完整的例子,運行並演示性能問題 – 2014-08-28 13:50:12

+0

是複製可執行示例是最好的! – Jeff 2014-08-28 14:00:21

回答

0

傑夫張貼在問題下的意見,解決方案是從熊貓0.13.1升級到0.14.1

相關問題