Поскольку у вас есть строка, вы можете передать ее в файлоподобный буфер и затем прочитать ее с помощью pandas read_csv в кадре данных.
Предполагая, что ваша строка с кадром данныхназывается dfstring
, код будет выглядеть следующим образом:
import io
bufdf = io.StringIO(dfstring)
df = pd.read_csv(bufdf, sep=???)
Если ваша строка содержит несколько фреймов данных, разделите ее на split
и используйте цикл.
import io
dflist = []
for sdf in dfstring.split('\n\n'): ##this seems the separator between two dataframes
bufdf = io.StringIO(sdf)
dflist.append(pd.read_csv(bufdf, sep=???))
Beосторожно передавая соответствующий параметр sep
, мой ???
означает, что я не могу понять, что может быть правильным параметром.Ваше поле разделено пробелами, поэтому вы можете использовать sep='\s+'
), но я вижу, что у вас также есть пробелы, которые не должны быть разделителями, так что это может вызвать ошибку синтаксического анализа.sep
принять регулярное выражение, поэтому чтобы иметь 2 последовательных пробела в качестве разделителя, вы можете сделать: sep='\s\s+'
(для этого потребуется дополнительный параметр engine='python'
).Но опять же, убедитесь, что у вас есть как минимум 2 пробела между двумя последовательными полями.
См. здесь для справки о модуле io
и StringIO
.
Обратите внимание, чтоМодуль io
существует в python3, но не в python2 (у него другое имя), но поскольку последние версии панд требуют python3, я думаю, вы используете python3.