Я столкнулся со странным MemoryError
, и я не понимаю, почему он там.Пример кода:
# some setup
import numpy as np
import pandas as pd
import random
blah = pd.DataFrame(np.random.random((100000,2)), columns=['foo','bar'])
blah['cat'] = blah.apply(lambda x: random.choice(['A','B']), axis=1)
blah['bat'] = blah.apply(lambda x: random.choice([0,1,2,3,4,5]), axis=1)
# the relevant part:
blah['test'] = np.where(blah.cat == 'A',
blah[['bat','foo']].groupby('bat').transform(sum),
0)
Назначение blah['test']
таким образом дает сбой с MemoryError
, , но : если я вместо этого сделаю это:
blah['temp'] = blah[['bat','foo']].groupby('bat').transform(sum)
blah['test'] = np.where(blah.cat == 'A',
blah['temp'],
0)
всеработает отлично.Я предполагаю, что есть кое-что о том, как np.where
и .groupby()
взаимодействуют, что вызывает это.
Однако, если у моего начального blah
есть только столбцы 'foo', 'cat', 'bat'
(поэтому нет столбца bar
, который не 'Я не имею непосредственного отношения к ошибочному разделу кода) и с первым способом все в порядке, так что это меня еще больше смущает.
Что здесь происходит?