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))
如何转换列的类型?请帮忙!
答案 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)