Другой формат фрейма данных с 'loc' и 'to_frame' - PullRequest
0 голосов
/ 07 мая 2019

Я выполняю функцию apply на фрейме данных, который иногда имеет одну строку, и есть два источника фрейма данных. Один из них - результат .loc, а другой - преобразование серии в dataframe с помощью to_frame ().

Данные одинаковы в обоих из них. Он находится в рекурсивной функции, которая с f1 в качестве начального ввода, а затем запрашивает внутри функции df2 и снова вызывает функцию.

df1 = row.to_frame()
df2 = df3.loc[df3.loc['colname']== value]

Затем они выполняют ту же функцию применения, что и:

another_df = df1_or_df2.apply (lambda row:function (row))

выше отлично работает с df1, но выдает ошибку для df2 keyerror: ('id', 'occurred at index id') для df2. Если я добавлю axis=1, то это сработает.

Я сделал try, except, чтобы это работало, поскольку это одноразовая вещь, но сейчас нужно улучшить скорость.

Можете ли вы сказать, почему два формата df отличаются или как я могу сделать это более эффективно?

1 Ответ

0 голосов
/ 07 мая 2019

Я думал, что to_frame() преобразовывал ряд в один ряд, как я хотел, но я думаю, что он делал один ряд для каждого столбца.Так я и сделал df1 = row.to_frame().transpose().Теперь это работает на них обоих.

Чтобы сделать его более эффективным, у меня был атрибут в исходном кадре данных, чтобы разделить данные на подмножества.Итак, теперь вся функция занимает меньше времени.

Спасибо.

...