Python,我想在导入csv文件后转换特定的列类型

时间:2019-05-29 04:15:50

标签: python csv types casting

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

如何转换列的类型?请帮忙!

3 个答案:

答案 0 :(得分:1)

给出适当的列类型:

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

编辑:列出最大字符串长度。例如。现在假设您的第一列不超过20个字符,这应该可以正常工作。

答案 1 :(得分:0)

您可以对结果进行切片并使用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的评论)似乎是正确的,因为您可以首先将它们与不同的数据类型一起导入。但是,如果您被事实困扰,那么上面的代码应该可以工作。

答案 2 :(得分:-1)

尝试类似的东西:

df[col_bame]=df[can l_name].astype(int)