import numpy as np
data_arr = np.loadtxt("asset.csv", delimiter = ",", dtype = 'str')
data_arr
Результат:
array([['G1', '1', '100', '5', '0'],
['G1', '1', '21', '538', '0'],
['G1', '1', '22', '6000', '0'],
...,
['G2', '8', '61', '241908', '8800'],
['G2', '8', '70', '57341', '16800'],
['G2', '9', '51', '1340', '0']], dtype='<U7')
Но я хочу преобразовать столбцы 2,3,4,5 (поля '1', '100', '5', and '0' в первой строке) в тип int
потому что я хочу попробовать
family_number = np.array([1,2,3,4,100])
capital = data_arr[data_arr[:,0]= = "G1"]
for i, number in enumerate(family_number):
family_numbers = capital[capital[:,1]>i] & capital[capital[:,1]<=number]
print("\t" + len(family_numbers))
Как я могу преобразовать тип столбцов? Пожалуйста помоги!






Попробуйте что-то вроде:
df[col_bame]=df[can l_name].astype(int)
Укажите правильные типы столбцов:
np.loadtxt('asset.csv', delimiter = ",", dtype='S20,int64,int64,int64,int64')
Обновлено: укажите максимальную длину строки рядом. Например. теперь это должно работать, если ваш первый столбец не превышает 20 символов.
Когда я это делаю, поле 'str' исчезает! массив([('', 1, 100, 5, 0), ('', 1, 21, 538, 0), ('', 1, 22, 6000, 0), ..., ('', 8, 61, 241908, 8800), ('', 8, 70, 57341, 16800), ('', 9, 51, 1340, 0)], dtype=[('f0', '<U'), ('f1', '<i4'), ('f2', '<i4'), ('f3', '<i4'), ('f4', '<i4')])
Извините за столько вопросов, но есть 2 проблемы. сначала пишет TypeError: тип данных "s20" не понят. Во-вторых, когда я набираю «str,int,int,int,int» вместо того, что вы рекомендуете, он говорит IndexError: слишком много индексов для массива
s20 не S20.
Вы можете нарезать результат и использовать astype:
arr = np.array([['1', '2', '3'], ['3', '4', '5'], ['5', '6', '7']])
arr
# array([['1', '2', '3'],
# ['3', '4', '5'],
# ['5', '6', '7']], dtype='<U1')
arr[:,1:].astype(int)
# array([[2, 3],
# [4, 5],
# [6, 7]])
Я имею в виду, что другие ответы и комментарии (@Amadan's, например) кажутся правильными в том смысле, что вы можете импортировать их с разными типами данных в первую очередь. Но если вы застряли постфактум, код, подобный приведенному выше, должен работать.
Кажется, он был преобразован, но после этого возникает еще одна проблема, подобная этой TypeError: '>' не поддерживается между экземплярами 'numpy.ndarray' и 'int'
используйте
dtype = 'int64'. Есть ли причина указыватьstrкак dtype?