pandas.merge莫名其妙地慢了

时间:2014-08-28 13:37:27

标签: python pandas

以下效果很好:

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)点。

我使用pandas 0.13.1因为它是WinPython中包含的那个:)

1 个答案:

答案 0 :(得分:0)

正如Jeff在问题评论中所说,解决方案是从pandas 0.13.1升级到0.14.1