преобразовать текст в фрейм данных в python - PullRequest
0 голосов
/ 11 июля 2020

Я получил ответ API и превратил его в текст. Ниже приведен результат:

'timestamp,open,high,low,close,volume\r\n2020-07-10 19:50:00,0.6020,0.6020,0.6020,0.6020,2436\r\n2020-07-10 19:40:00,0.6005,0.6005,0.6005,0.6005,1000\r\n2020-07-10 19:15:00,0.6200,0.6220,0.6200,0.6220,2200\r\n2020-07-10 19:05:00,0.6100,0.6100,0.6100,0.6100,1000\r\n2020-07-10
...' 

как мне преобразовать это в CSV? Также можно было бы сделать это, не сохраняя файл csv на моем устройстве?

Ответы [ 2 ]

2 голосов
/ 11 июля 2020

Ваши данные уже находятся в формате CSV. Просто сделайте следующее, используя StringIO:

import pandas as pd
from io import StringIO

data = 'timestamp,open,high,low,close,volume\r\n2020-07-10 19:50:00,0.6020,0.6020,0.6020,0.6020,2436\r\n2020-07-10 19:40:00,0.6005,0.6005,0.6005,0.6005,1000\r\n2020-07-10 19:15:00,0.6200,0.6220,0.6200,0.6220,2200\r\n2020-07-10 19:05:00,0.6100,0.6100,0.6100,0.6100,1000\r\n2020-07-10'
pd.read_csv(StringIO(data))

Результат:

             timestamp    open    high     low   close  volume
0  2020-07-10 19:50:00  0.6020  0.6020  0.6020  0.6020  2436.0
1  2020-07-10 19:40:00  0.6005  0.6005  0.6005  0.6005  1000.0
2  2020-07-10 19:15:00  0.6200  0.6220  0.6200  0.6220  2200.0
3  2020-07-10 19:05:00  0.6100  0.6100  0.6100  0.6100  1000.0
4           2020-07-10     NaN     NaN     NaN     NaN     NaN
0 голосов
/ 11 июля 2020

Если этот ответ полезен, то go проголосуйте за принятый ответ здесь, откуда я взял его и немного изменил: Как преобразовать строку, которая использует «\ r \ n» в качестве разрыва строки, в pandas фрейм данных

import pandas as pd
s = b'timestamp,open,high,low,close,volume\r\n2020-07-10 19:50:00,0.6020,0.6020,0.6020,0.6020,2436\r\n2020-07-10 19:40:00,0.6005,0.6005,0.6005,0.6005,1000\r\n2020-07-10 19:15:00,0.6200,0.6220,0.6200,0.6220,2200\r\n2020-07-10 19:05:00,0.6100,0.6100,0.6100,0.6100,1000\r\n2020-07-10' 
data = list(map(lambda x: x.split(','),s.decode('utf-8').split("\r\n")))
df = pd.DataFrame(data[1:], columns=data[0])
df

вывод:

    timestamp           open    high    low    close    volume
0   2020-07-10 19:50:00 0.6020  0.6020  0.6020  0.6020  2436
1   2020-07-10 19:40:00 0.6005  0.6005  0.6005  0.6005  1000
2   2020-07-10 19:15:00 0.6200  0.6220  0.6200  0.6220  2200
3   2020-07-10 19:05:00 0.6100  0.6100  0.6100  0.6100  1000
4   2020-07-10          None    None    None    None    None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...