Как я могу вернуть dataframe из Python в C #? - PullRequest
0 голосов
/ 06 апреля 2019

Компания, в которой я работаю, создала Webapp, разделенную на модули в c # asp.net, для некоторых вещей я работаю там программистом, а также специалистом по данным, я сделала много отчетов на python с пандами и экспортировано в Excel, чтобы передать их моему боссу, но теперь они спрашивают меня, могу ли я интегрировать все эти отчеты в один новый модуль для веб-приложения компании, чтобы они могли видеть их в Интернете вместо файлов Excel.

У меня вопрос: могу ли я создать простой контроллер / представление и в контроллере вызвать файл python, который я создал для отчета, и вернуться к представлению фрейма данных pandas, а затем присвоить ему стиль?

Пока я прочитал, я нашел, как выполнить файл python из контроллера c #, но я не нашел ничего о возврате фрейма данных.

Код, который я получил прямо сейчас:

Контроллер:

    public ActionResult Home()
    {


        string python = RunPython.runPython(AppDomain.CurrentDomain.BaseDirectory + @"\Python\Hello.py", "hola");
        ViewBag.Python = python;
        return View();
    }

Класс, в котором я призываю к выполнению файла python:

public class RunPython
{
    public static string runPython(string cmd, string args)
    {
        ProcessStartInfo start = new ProcessStartInfo();
        start.FileName = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)+@"\Programs\Python\Python37\python.exe";
        start.Arguments = string.Format("\"{0}\" \"{1}\"", cmd, args);
        start.UseShellExecute = false;
        start.CreateNoWindow = true;
        start.RedirectStandardOutput = true;
        start.RedirectStandardError = true;
        using (Process process = Process.Start(start))
        {
            using (StreamReader reader = process.StandardOutput)
            {
                string stderr = process.StandardError.ReadToEnd();
                string result = reader.ReadToEnd();
                return result;
            }
        }
    }
}

Результат, который я получаю от звонка, выглядит примерно так:

names ages 0 manoel 24 1 anthony 24

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

Я бы хотел, чтобы результат был что-то вроде

id | Names   | Ages
0  | Manoel  | 24
1  | Anthony | 25

или как массив, чтобы я мог перебрать и поместить его в таблицу в представлении.

у кого-нибудь есть идеи?

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