Python, я хочу преобразовать определенный тип столбца после импорта файла CSV - PullRequest
0 голосов
/ 29 мая 2019
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 type

потому что я хочу попробовать

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))

Как я могу конвертировать тип столбцов?Пожалуйста, помогите!

Ответы [ 3 ]

1 голос
/ 29 мая 2019

Укажите правильные типы столбцов:

np.loadtxt('asset.csv', delimiter=",", dtype='S20,int64,int64,int64,int64')

РЕДАКТИРОВАТЬ: указать максимальную длину строки рядом с.Например, теперь это должно работать, если ваш первый столбец не превышает 20 символов.

0 голосов
/ 29 мая 2019

Вы можете нарезать результат и использовать 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) кажутся правильными в том смысле, что вы могли бы сначала импортировать их с разными типами данных. Но, если вы застряли после факта, код, подобный приведенному выше, должен работать.

0 голосов
/ 29 мая 2019

Попробуйте что-то вроде:

df[col_bame]=df[can l_name].astype(int)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...