2014-08-28 297 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

相关问题