使ndarray包含字符串和int

时间:2017-09-12 05:52:26

标签: python pandas csv numpy

如何通过读取像

这样的csv文件来制作ndarray
12,employed,32,happy,1
21,unemployed,31,poor,0
34,rich,45,unhapppy,0

注意:文件可能非常大

输出数组:

[[12,"employed",32,"happy",1]
 [21,"unemployed",31,"poor",0]
 [34,"rich",45,"unhapppy",0]]

使用np.genfromtxt(filename,delimiter = ",",dtype = None)从csv文件读取时,它会生成元组的1-d数组,而dtype = int使字符串成为Nan

2 个答案:

答案 0 :(得分:4)

先使用read_csv,然后使用DataFrame.values转换为numpy array

import pandas as pd 
df = pd.read_csv('file', header=None)
print(df)
    0           1   2         3  4
0  12    employed  32     happy  1
1  21  unemployed  31      poor  0
2  34        rich  45  unhapppy  0

arr = df.values
print(arr)
[[12 'employed' 32 'happy' 1]
 [21 'unemployed' 31 'poor' 0]
 [34 'rich' 45 'unhapppy' 0]]

答案 1 :(得分:0)

您可以使用组合数据类型创建结构化数组。与列表不同的NumPy数组不能包含不同的数据类型。 NumPy数组的所有元素必须是相同的数据类型。

import numpy as np

dt = np.dtype([("iq",     np.uint8),
               ("status", np.unicode_, 32),
               ("age",    np.uint8),
               ("mood",   np.unicode_, 32),
               ("flag",   np.bool_)])

a = np.loadtxt("file.csv", dtype=dt, delimiter=",")

print(a)
print(a[1:]["status"])
print(a[["age", "mood"]])