Панды: как прочитать цепочку битов в отдельные столбцы, когда нет разделителя? - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь прочитать некоторые файлы в кадре данных Pandas, они выглядят примерно так:

287212,xxxanxxxxx  
5466029,xxxxxxxxxx  
324561,nnnnxnnnna  
687811,xxxxxxxxxn  
67454,nnnaxnnnnn  

или примерно так:

287226,0010100000  
5466089,1110100000  
324561,0010101000  
687811,0000000000  
67404,0010000000  

Я хочу использовать первыймногозначное число в качестве столбца индекса и значений после разделителя ',' Я хочу разделить на один столбец на символ.
например, вот так:

index   1 2 3 4 5 6 7 8 9 10  
287216  x x x a n x x x x x  
5466029 x x x x x x x x x x  
324561  n n n n x n n n n a  
687811  x x x x x x x x x n  
67404   n n n a x n n n n n  

на данный момент у меня естьудалось сделать это так:

df = pd.read_csv(csv_file, sep=',',header=None).set_index(0)  
df = pd.DataFrame(df[1].apply(list).tolist()).set_index(df.index)

проблема в том, что первая строка кода читает второй столбец как dtype = object.и затем, когда я делю это на список, используя вторую строку кода f, каждый символ или значение по-прежнему имеет вид dtype = object, и это занимает много памяти.и мой скрипт продолжает сбой из-за ошибок памяти.

- это более прямой способ прочитать файл csv и указать dtypes?

Может кто-нибудь помочь мне с этой проблемой?

1 Ответ

0 голосов
/ 05 июня 2019

Вы можете разбить строки на строки длиной 1 с помощью NumPy:

pd.DataFrame(df.values.astype("bytes").view("S1"), index=df.index)

Или 8-битные целые числа:

pd.DataFrame(df.values.astype("bytes").view(np.uint8), index=df.index)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...