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

Следующая необъяснимо медленно. Я просто сделать тайминг первого dataframe неуникальным и иметь его в качестве столбца, а не как индекс:

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

+0

Да, я предоставил df.info() и т. д. в своем обновлении. Возможно, мне нужно сделать полный пример, который запускает и демонстрирует проблемы с производительностью. –

+0

да копировать примерный пример лучше! – Jeff

ответ

0

Как Джефф писал в комментариях по этому вопросу, решение перейти с пандами 0.13.1 до 0.14.1

Смежные вопросы