Панды читать CSV, обрезать последние два символа - PullRequest
0 голосов
/ 17 мая 2018

CSV-файл выглядит следующим образом:

a,b,c
1,2,3, 
4,5,6, 
a,b,c, 

Когда я попытался прочитать этот файл с помощью pandas read_csv, фрейм данных выглядит следующим образом:

   |---------------|
   |   | a | b | c |
   |---------------|
   | 1 | 2 | 3 |   |
   | 4 | 5 | 6 |   |
   | a | b | c |   |
   |---------------|

Я думаю, что проблема здесьв данных: это выглядит как 1,2,3, пробел \ n и панды думают, что есть 4 столбца, а первый столбец безымянный.Есть ли способ, которым я могу изменить это на:

   |-----------|
   | a | b | c |
   |-----------|
   | 1 | 2 | 3 |
   | 4 | 5 | 6 |
   | a | b | c |
   |-----------|

Эти файлы около 50 миллионов строк, и есть много файлов.Есть ли способ сделать это с минимальным временем выполнения?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Рассмотрим приведенный ниже код, где index_col=False.Вы можете использовать это решение, если вы не знаете, сколько столбцов ожидается в файле CSV.Лучше, если разные файлы имеют разное количество столбцов.Обратитесь к Документам для получения дополнительной информации.

from io import StringIO
csvtext = StringIO("""a,b,c
1,2,3, 
4,5,6, 
a,b,c, """)

df = pd.read_csv(csvtext, index_col=False)
df

Выход:

    a   b   c
0   1   2   3
1   4   5   6
2   a   b   c
0 голосов
/ 17 мая 2018

Используйте параметр usecol в pd.read_csv, чтобы прочитать только первые три столбца в CSV-файле.

from io import StringIO
csvtext = StringIO("""a,b,c
1,2,3, 
4,5,6, 
a,b,c, """)

df = pd.read_csv(csvtext, usecols=[0,1,2])
df

Вывод:

   a  b  c
0  1  2  3
1  4  5  6
2  a  b  c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...