Нестабильный Pandas Групповой вывод с объектами cx Oracle - PullRequest
0 голосов
/ 09 января 2020

Я обнаружил проблему, при которой другой фрейм данных выводится с последующими запусками всякий раз, когда в фрейм данных добавляется новый столбец, содержащий объекты cx Oracle в одном из его столбцов и вызывается функция groupby. Обходные пути просты (поэтому не нужно предлагать их); вместо этого мне более любопытно узнать причину.

Я подключаюсь к пространственной базе данных Oracle и делаю запрос в Python в качестве кадра данных. Этот фрейм данных имеет столбец «SHAPE», который содержит типы объектов cx_ Oracle .Object. Пример результирующего df выглядит следующим образом:

id     value     shape
1      10        <cx_Oracle.Object SDE.ST_GEOMETRY at 0x........>
2      20        <cx_Oracle.Object SDE.ST_GEOMETRY at 0x........>
1      30        <cx_Oracle.Object SDE.ST_GEOMETRY at 0x........>
2      40        <cx_Oracle.Object SDE.ST_GEOMETRY at 0x........>

Я хочу добавить столбец, groupby 'id' и сумму на 'value'. Выполнение следующего кода:

df['new_col'] = 'dummyvals'
gb = df.groupby(df.id, as_index=False).sum()[['id', 'value']]

yields

id     value
2      40
4      60

Групповая операция не работает должным образом, так как она также объединяет столбец 'id'. Однако, если я запускаю строку groupby во второй раз (как и во все последующие разы), я получаю ожидаемый результат:

id     value
1      40
2      60

Вот мои краткие наблюдения:

  • Проблема возникает при добавлении нового столбца и групповой агрегации. Выходные данные первого выполнения агрегирования по группам суммируются по столбцу, по которому выполняется группировка ('id' в предыдущем примере), тогда как второй и последующие периоды агрегирования по группам дают ожидаемые результаты.
  • Если мой Oracle запрос не запрашивает столбец SHAPE (поэтому cx_ Oracle. Типы объектов не вводятся в фрейм данных), эта проблема не возникает
...