Панды read_csv только первая запятая - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть база данных csv, которая выглядит следующим образом:

Date,String
2010-12-31,'This, is, an example string'
2011-12-31,"This is an, example string"
2012-12-31,This is an example, string

Я пытаюсь использовать панд, потому что я считаю, что это одна из самых распространенных библиотек для работы с подобными ситуациями.Есть ли способ создать DataFrame с учетом только первой запятой с помощью функции read_csv?(независимо от того, что строка после имеет "" или "или ничего не выделяет).

Если нет, то какая самая эффективная альтернатива для этого?

Большое спасибо ваванс за любую помощь,

1 Ответ

0 голосов
/ 03 февраля 2019

Вы можете обмануть, передав регулярное выражение для аргумента sep, равного read_csv.Я использовал регулярное выражение ^([^,]+),, которое захватывает первую запятую.Я также использовал аргумент engine, чтобы избежать предупреждения панд (поскольку механизм C по умолчанию не поддерживает sep для регулярных выражений) и аргумент usecols, чтобы убедиться, что мы получаем только нужные нам столбцы (без него мы также получаем«неназванный» столбец, я не уверен, почему честно).

Вы можете получить больше информации о каждом аргументе в read_csv документах .

тест.csv

Date,String
2010-12-31,'This, is, an example string'
2011-12-31,"This is an, example string"
2012-12-31,This is an example, string

Тогда

print(pd.read_csv('test.csv', sep='^([^,]+),', engine='python', usecols=['Date', 'String']))

Выходы

         Date                         String
0  2010-12-31  'This, is, an example string'
1  2011-12-31   "This is an, example string"
2  2012-12-31     This is an example, string

Это не будет работать, если у вас будет более 2 «фактических» столбцов вфайл CSV

...