Евгений Петрищев
Посетитель
Всего сообщений: 11
Дата регистрации: 12.11.2018
|
Создано:
27.08.2024 17:23:36
|
Как сейчас я делаю:
Есть дата фрейм data со структурой:
Код |
---|
'column1' 'column2'
0 1 2
1 3 4
2 5 6 |
Я хочу добавить все значения к таблице растра
Код |
---|
table = Rastr.Tables('table_name')
for row in data.itertuples(index=False):
table.addRow()
index = table.Size - 1
for column_name, value in zip(data.columns, row):
table.Cols(f"{column_name}").SetZ(index, value)
|
Но вот этот цикл в цикле мне не нравится и хочется оптимизировать добавление данных в Растр. Есть ли другой более простой и менее затратный способ добавить данные в таблицу?
Спасибо.
|
Евгений Машалов
Администратор
Всего сообщений: 1046
Дата регистрации: 23.04.2007
|
Создано:
27.08.2024 23:39:13
|
Ну вот мы pyd доделаем и тогда ужо напрямую numpy.array настанет. Погодите чуток.
А пока лайфхаки. Не нравится-то что ? Медленно ? Или некрасиво ? Насчет ускорить:
1. Поставить нужный размер сразу. AddRow - дорого.
2. Сразу получить все столбцы в мап или вектор а не шарить по коллекции на каждую строку да еще и по имени.
|
Евгений Петрищев
Посетитель
Всего сообщений: 11
Дата регистрации: 12.11.2018
|
Создано:
28.08.2024 12:11:07
|
Да не нравится то что дорого через AddRow и некрасиво и тоже дороговато когда вложенность циклов.
Опыта взаимодействия с Растром пока маловато, поэтому прошу помочь:
1. Подскажите пожалуйста каким образом можно сразу поставить нужный размер таблицы? Или направьте меня на нужный раздел документации, где про это написано. Я сам не нашел.
2. Как можно сразу получить все столбцы в мапу или вектор?
P.S. Есть возможность почитать где-то про pyd и какие ориентировочные сроки по внедрению?
|
Евгений Машалов
Администратор
Всего сообщений: 1046
Дата регистрации: 23.04.2007
|
Создано:
28.08.2024 12:22:59
|
1. У ITable есть
[propput, id(3), helpstring("property Size")] HRESULT Size([in] long Val);
2. Ну насоздавать объектов ICol в коллекции питона да и ходить по ним синхронно с Вашими данными. Они будут готовы и Вам не придется их каждый раз доставать из коллекции.
pyd в разработке и в обнадеживающем состоянии. Сроков нет, ибо это наша внутренняя разработка. Возможно как с кучей других проектов это уйдет в трубу, но если нет - будут и сроки, и стоимость.
|
Евгений Петрищев
Посетитель
Всего сообщений: 11
Дата регистрации: 12.11.2018
|
Создано:
28.08.2024 18:06:14
|
А что за объекты ITable и ICol?
Я сейчас взаимодействую с Растр через СОМ интерфейс посредством
Код |
---|
pythoncom.CoInitialize()
self.rastr = Dispatch("Astra.Rastr") |
И там просто объекты Cool и Table.
Это тоже самое или вы имели ввиду другой способ?
|
Евгений Машалов
Администратор
Всего сообщений: 1046
Дата регистрации: 23.04.2007
|
Создано:
28.08.2024 19:07:22
|
Давайте я спрошу напрямую. Ваш проект предполагает коммерческое использование ?
|
Евгений Петрищев
Посетитель
Всего сообщений: 11
Дата регистрации: 12.11.2018
|
Создано:
28.08.2024 19:33:11
|
Нет. Это проект внутри СО, на уровне обычного ЛСА. Пишем небольшое приложение со службой СЭР.
|
Евгений Машалов
Администратор
Всего сообщений: 1046
Дата регистрации: 23.04.2007
|
Создано:
28.08.2024 20:33:07
|
Как ?! Нам сказали что ЛСА никаких не существует !!
Очередной Парус, стало быть.
Да: "Col" и "Тable". Они самые. Сделайте их persistent до цикла и померьте рантайм. Должно снять как минимум 30%
|