Как загрузить файл tsv в фрейм данных Pandas?

136

Я новичок в питоне и пандах. Я пытаюсь tsvзагрузить файл в панда DataFrame.

Вот что я пытаюсь и получаю ошибку:

>>> df1 = DataFrame(csv.reader(open('c:/~/trainSetRel3.txt'), delimiter='\t'))

Traceback (most recent call last):
  File "<pyshell#28>", line 1, in <module>
    df1 = DataFrame(csv.reader(open('c:/~/trainSetRel3.txt'), delimiter='\t'))
  File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 318, in __init__
    raise PandasError('DataFrame constructor not properly called!')
PandasError: DataFrame constructor not properly called!
screechOwl
источник
11
Для тех, кто придет к этому ответу в 2017+, используйте read_csv('path_to_file', sep='\t'). См. Этот ответ ниже
Тед Петру
Спасибо @TedPetrou
Salomon

Ответы:

153

Примечание . Начиная с версии 17.0 from_csvне рекомендуется: используйте pd.read_csvвместо этого

В документации перечислена функция .from_csv, которая, похоже, делает то, что вы хотите:

DataFrame.from_csv('c:/~/trainSetRel3.txt', sep='\t')

Если у вас есть заголовок, вы можете пройти header=0.

DataFrame.from_csv('c:/~/trainSetRel3.txt', sep='\t', header=0)
Юон
источник
4
У меня были проблемы с этим методом - он был очень медленным и в конце не удалось выполнить индексацию. Вместо этого я использовал read_table (), который работал намного быстрее и без дополнительных параметров.
Юрик
21
Обратите внимание, что с версии 17.0 from_csvне рекомендуется: используйте pd.read_csvвместо этого!
rafaelvalle 03
2
Мне пришлось использовать следующее: DataFrame.read_csv ('filepath.tsv', sep = '', header = 0)
Арчи
3
Это плохой ответ; вы можете читать TSV изначально pd.read_csv/read_table, вам просто нужно установить delim_whitespace=Trueилиsep
smci
3
@rafaelvalle добавил устаревшее уведомление
Arayan Singh
84

По состоянию на 17.0 from_csvне рекомендуется.

Используйте pd.read_csv(fpath, sep='\t')или pd.read_table(fpath).

Камил Синди
источник
4
Примечание. Read_table устарела с версии 0.24.0. Вместо этого используйте pandas.read_csv ().
ManuelSchneid3r
57

Используйте read_table(filepath). Разделитель по умолчанию - табуляция

Уэс МакКинни
источник
1
read_table не требует никаких параметров. Прекрасно работает.
Джей
19

Попробуй это

df = pd.read_csv("rating-data.tsv",sep='\t')
df.head()

введите описание изображения здесь

На самом деле вам нужно исправить параметр sep .

Мохсин Ашраф
источник
7

открыть файл, сохранить как .csv, а затем применить

df = pd.read_csv('apps.csv', sep='\t')

для любого другого формата просто измените тег sep

Анкит Шривастава
источник
0
df = pd.read_csv('filename.csv', sep='\t', header=0)

Вы можете загрузить файл tsv прямо во фрейм данных pandas, указав разделитель и заголовок.

Джексон
источник