Чтобы протестировать некоторые функции, я хотел бы создать DataFrame
строку. Допустим, мои тестовые данные выглядят так:
TESTDATA="""col1;col2;col3
1;4.4;99
2;4.5;200
3;4.7;65
4;3.2;140
"""
Какой самый простой способ прочитать эти данные в панд DataFrame
?
from pandas.compat import StringIO
, отметив, что это тот же класс, что и тот, который поставляется с Python.pd.read_table()
это эквивалентная функция, только чуть лучше номенклатураdf = pd.read_table(TESTDATA, sep=";")
.pandas.compat.StringIO
. Таким образом, мы не должны импортироватьStringIO
отдельно. Однакоpandas.compat
пакет считается закрытым в соответствии с pandas.pydata.org/pandas-docs/stable/api.html?highlight=compat, поэтому оставляем ответ таким, какой он есть на данный момент.df.to_csv(TESTDATA)
, используйтеTESTDATA.seek(0)
Сплит метод
источник
df = pd.DataFrame([x.split(';') for x in data.split('\n')[1:]], columns=[x for x in data.split('\n')[0].split(';')])
Быстрое и простое решение для интерактивной работы - копировать и вставлять текст, загружая данные из буфера обмена.
Выберите содержимое строки с помощью мыши:
В оболочке Python используйте
read_clipboard()
Используйте соответствующий разделитель:
источник
Этот ответ применяется, когда строка вводится вручную, а не когда она читается откуда-то.
Традиционный CSV переменной ширины нечитаем для хранения данных в виде строковой переменной. Специально для использования внутри
.py
файла, рассмотрите данные с фиксированной шириной, разделенные трубами. Различные IDE и редакторы могут иметь плагин для форматирования разделенного на трубы текста в аккуратную таблицу.С помощью
read_csv
Сохраните следующее в служебном модуле, например
util/pandas.py
. Пример включен в строку документации функции.Нерабочие альтернативы
Код ниже не работает должным образом, потому что он добавляет пустой столбец с левой и правой сторон.
Что касается
read_fwf
, он на самом деле не использует так много дополнительных kwargs, которыеread_csv
принимает и использует. Как таковой, он не должен использоваться вообще для данных, разделенных каналом.источник
read_fwf
принимает большеread_csv
аргументов, чем задокументировано, но это правда, что некоторые из них не имеют никакого эффекта .Самый простой способ - сохранить его во временном файле и затем прочитать:
Правильный способ создания временного файла: как мне создать tmp-файл в Python?
источник