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的一个:)
你需要显示输入帧(或者至少是df.info()) – Jeff 2014-08-28 13:44:37
是的,我在我的更新中提供了df.info()等。 也许我需要做一个完整的例子,运行并演示性能问题 – 2014-08-28 13:50:12
是复制可执行示例是最好的! – Jeff 2014-08-28 14:00:21