Numpy -Recarray, C# структурированные данные - PullRequest
3 голосов
/ 21 июня 2020

Я написал потребителя данных в C#, который считывает строковые данные из python скрипта API. Самый эффективный метод, который я нашел до сих пор, - это получить данные в numpy-recarray в python, распечатать их на консоли и прочитать с помощью StreamReader.

Я получаю следующую строку в чтение C# рутина. Это одна длинная строка (7000 записей) котировок акций (Дата, Открытие, Максимум, Минимум, Закрытие). Без возврата каретки и перевода строки.

[(datetime.date (2020, 6, 1), 29.80, 30.65, 29.45, 30.24), (datetime.date (2020, 6, 2), 30.49, 31.43, 30.19, 31.17) ...]

Теперь мне нужно как-то разобрать это во что-то, что я могу легко использовать для вставки этих данных в базу данных SQL. Я знаю, как сделать вставку из списка, массива и т. Д. c. Я вижу маршрутизацию грубого форсированного синтаксического анализа, которая считывает этот символ по символу и перестраивает записи в список. Тогда массовая вставка SQL проще простого.

Я чувствую, что может быть лучший подход изменить python средство записи консоли, чтобы записать эту длинную строку в формате, который можно было бы преобразовать в список в C# с Linq или другим назначением. Я немного не понимаю, с чего начать. Есть предложения?

1 Ответ

0 голосов
/ 21 июня 2020

Возможно, вам больше понравится созданный pandas csv:

Просто чтобы грубо взять вам список кортежей:

In [25]: alist = [(datetime.date(2020, 6, 1), 29.80, 30.65, 29.45, 30.24), (date
    ...: time.date(2020, 6, 2), 30.49, 31.43, 30.19, 31.17)]                    
In [26]: alist                                                                  
Out[26]: 
[(datetime.date(2020, 6, 1), 29.8, 30.65, 29.45, 30.24),
 (datetime.date(2020, 6, 2), 30.49, 31.43, 30.19, 31.17)]

In [28]: import pandas as pd                                                    
In [29]: df=pd.DataFrame(alist)                                                 
In [30]: df                                                                     
Out[30]: 
            0      1      2      3      4
0  2020-06-01  29.80  30.65  29.45  30.24
1  2020-06-02  30.49  31.43  30.19  31.17
In [31]: df.to_csv('test.csv')                                                  
In [32]: cat test.csv                                                           
,0,1,2,3,4
0,2020-06-01,29.8,30.65,29.45,30.24
1,2020-06-02,30.49,31.43,30.19,31.17

Вы можете уточнить этот вывод с помощью или без заголовки столбцов и индексы строк.

Существует также numpy savetxt, который может потребовать дополнительных усилий для использования с подобным структурированным массивом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...