Используйте разделитель нескольких символов в Python Pandas read csv

похоже, что панды read_csv функции только односимвольные разделители/сепараторы. Есть ли способ разрешить использование строки символов, например "* / * "или"%%"?

3 ответов


панды сейчас поддержка нескольких символов разделителей

import panda as pd
pd.read_csv(csv_file, sep="\*\|\*")

как пишет Падрайк Каннингем в комментарии выше, неясно, почему вы этого хотите. The запись Wiki для спецификации CSV состояния о разделителях:

... разделенные разделителями (обычно один зарезервированный символ, такой как запятая, точка с запятой или вкладка; иногда разделитель может содержать необязательные пробелы),

неудивительно, что оба csv модуль и панды не поддерживают то, что вы просите.

однако, если вы действительно хотите это сделать, вы в значительной степени используете строковые манипуляции Python. В следующем примере показано, как превратить фрейм данных в " csv " с помощью $$ разделительные линии и %% разделения столбцов.

'$$'.join('%%'.join(str(r) for r in rec) for rec in df.to_records())

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


решением было бы использовать read_table вместо read_csv:

1*|*2*|*3*|*4*|*5
12*|*12*|*13*|*14*|*15
21*|*22*|*23*|*24*|*25

Итак, мы могли бы читать это с:

pd.read_table('file.csv', header=None, sep='\*\|\*')