Я пытаюсь загрузить некоторые данные, состоящие из нескольких тысяч строк и 4 столбцов, где каждый столбец разделен пробелом табуляции, и превратить каждый элемент каждой строки в тип данных int.
когда я создаю фрейм данных следующим образом:
my_data = pd.read_csv('filename', sep='\t')
я получаю вывод, в котором каждая строка выглядит так:
col1\tcol2\tcol3\tcol4
Затем мне нужно преобразовать это в массив numpy, поэтому я делаю это:
arr_data = np.array(my_data)
это мой результат сейчас:
array([['col1\tcol2\tcol3\tcol4'],
['col1\tcol2\tcol3\tcol4'],
['col1\tcol2\tcol3\tcol4'],
.....
.....
так что теперь каждая строка представляет собой строку.
я бы хотел превратить все в int вместо string, но когда я пытаюсь сделать это:
arr_data = np.array(my_data, dtype=int)
я получаю ValueError
мне нужно написать вложенный цикл for, чтобы пройти каждую строку, а затем каждый столбец в каждой строке, чтобы каждый элемент превратился в int ??
редактировать:
Я также только что заметил, что когда я создаю фрейм данных, данные имеют форму (rows, 1) вместо (rows, 4), что, как я полагаю, означает, что delimiter не работал?
вот первые несколько строк:
1 1 5 874965758
1 2 3 876893171
1 3 4 878542960
1 4 3 876893119
1 5 3 889751712
1 7 4 875071561
Благодарность
Пожалуйста, не вставляйте скриншоты, а данные действительный. Скриншоты при необходимости скопировать нельзя. Я подозреваю, что ваши столбцы разделены пробелами. Проверить, помогает ли установка разделителя на '\s+'.






Ваши столбцы не разделены табуляцией. Они разделены пробелами. Используйте sep='\s+' для их анализа. Кстати, этот разделитель закрывает и вкладки.
СПАСИБО. примет как правильный ответ, как только позволит SO. Спасибо
Могу я спросить, как вы это поняли, просто взглянув на данные?
Это было единственное правдоподобное объяснение.
Используйте флаг delim_whitespace
my_data = pd.read_csv('filename', delim_whitespace=True)
Спасибо. это тоже сработало. есть ли разница между delim_whitespace=True и использованием аргумента sep = \s+?
@JessiAbrams - это то же самое, но delim_whitespace=True легко читается / обслуживается, а sep='\s+' - нет.
В то, что вы говорите, трудно поверить. Не могли бы вы включить первую пару строк файла?