Панды читают данные без заголовка или индекса - PullRequest
0 голосов
/ 02 мая 2018

Вот файл .csv :

0   0   1   1   1   0   1   1   0   1   1   1   1
0   1   1   0   1   0   1   1   0   1   0   0   1
0   0   1   1   0   0   1   1   1   0   1   1   1
0   1   1   1   1   1   1   1   1   1   1   1   2
0   1   1   1   0   1   1   1   1   1   1   1   1
0   0   0   1   1   1   0   1   0   0   0   1   1
0   0   0   0   1   1   0   0   1   0   1   0   2
0   1   1   0   1   1   1   1   0   1   1   1   1
0   0   1   0   0   0   0   0   0   1   1   0   1
0   1   1   1   0   1   1   0   0   0   0   1   1

, где в первом столбце должны быть индексы, подобные (0,1,2,3,4 ...), но по некоторым причинам они являются нулями. Есть ли способ сделать их нормальными при чтении CSV-файла с pandas.read_csv?

я использую

df = pd.read_csv(file,delimiter='\t',header=None,names=[1,2,3,4,5,6,7,8,9,10,11,12]) 

и получить что-то вроде:

    1   2   3   4   5   6   7   8   9   10  11  12
0   0   1   1   1   0   1   1   0   1   1   1   1
0   1   1   0   1   0   1   1   0   1   0   0   1
0   0   1   1   0   0   1   1   1   0   1   1   1
0   1   1   1   1   1   1   1   1   1   1   1   2
0   1   1   1   0   1   1   1   1   1   1   1   1
0   0   0   1   1   1   0   1   0   0   0   1   1
0   0   0   0   1   1   0   0   1   0   1   0   2
0   1   1   0   1   1   1   1   0   1   1   1   1
0   0   1   0   0   0   0   0   0   1   1   0   1
0   1   1   1   0   1   1   0   0   0   0   1   1

и это почти мне нужно, но первый столбец (индексы) по-прежнему равен нулю. Например, могут ли панды игнорировать этот первый столбец нулей и автоматически генерировать новые индексы, чтобы получить следующее:

  0 1 2 3 4 5 6 7 8 9 10 11 12
0 0 1 0 1 1 0 0 0 1 1  1  0  1
1 0 1 0 1 1 0 0 0 1 1  1  1  2
2 0 1 1 1 0 0 1 1 1 1  1  1  2

Ответы [ 2 ]

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

Почему суетиться над read_csv? Используйте np.loadtxt:

pd.DataFrame(np.loadtxt(file, dtype=int))

   0   1   2   3   4   5   6   7   8   9   10  11  12
0   0   0   1   1   1   0   1   1   0   1   1   1   1
1   0   1   1   0   1   0   1   1   0   1   0   0   1
2   0   0   1   1   0   0   1   1   1   0   1   1   1
3   0   1   1   1   1   1   1   1   1   1   1   1   2
4   0   1   1   1   0   1   1   1   1   1   1   1   1
5   0   0   0   1   1   1   0   1   0   0   0   1   1
6   0   0   0   0   1   1   0   0   1   0   1   0   2
7   0   1   1   0   1   1   1   1   0   1   1   1   1
8   0   0   1   0   0   0   0   0   0   1   1   0   1
9   0   1   1   1   0   1   1   0   0   0   0   1   1

Разделителем по умолчанию является пробел, и по умолчанию заголовки / индексы не считываются. Типы столбцов также не выводятся, поскольку для dtype указано int. В общем, это очень лаконичная и мощная альтернатива.

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

Возможно, вы захотите index_col=False

df = pd.read_csv(file,delimiter='\t', 
                 header=None, 
                 index_col=False) 

Из Документов ,

Если у вас есть неправильный файл с разделителями в конце каждой строки, Вы можете рассмотреть index_col = False, чтобы заставить панд не использовать первый столбец в качестве индекса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...