python - 使用numpy loadtxt读取每列不同数据类型的csv文件

时间:2015-07-22 04:40:53

标签: python csv numpy

我创建了一个包含两列的csv文件,第一列是时间数据,第二列是一些测量数据值。

2015/1/1 0:00   5       
2015/1/1 0:15   10    
2015/1/1 0:30   10   
2015/1/1 0:45   15   
2015/1/1 1:00   5  
2015/1/1 1:15   20  
2015/1/1 1:30   20  
2015/1/1 1:45   40  
2015/1/1 2:00   30  
2015/1/1 2:15   20  
2015/1/1 2:30   25  
2015/1/1 2:45   10  
2015/1/1 3:00   
2015/1/1 3:15   
2015/1/1 3:30   
2015/1/1 3:45   
2015/1/1 4:00   
2015/1/1 4:15   
2015/1/1 4:30   30  
2015/1/1 4:45   50  
2015/1/1 5:00   70  

现在我想使用numpy.loadtxt函数将这两列读入两个不同的numpy数组,其中包含日期列的字符串数据类型和值列的整数数据类型。

我尝试了不同的陈述,但没有一个能奏效。

time, data = np.loadtxt('TS.csv',dtype=str,delimiter=',',usecols=(0, 1),unpack=True)
time, data = np.loadtxt('TS.csv',dtype=(str,int),delimiter=',',usecols=(0, 1),unpack=True)
time, data = np.loadtxt('TS.csv',dtype=[str,int],delimiter=',',usecols=(0, 1),unpack=True)

有谁知道如何实现我刚才描述的目标? 谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

你非常接近你想要的东西。试试这个

data = np.loadtxt('TS.csv', dtype='str,int', delimiter=',', usecols=(0, 1), unpack=True)

答案 1 :(得分:0)

如果您有np.genfromtxt无法处理的内容,我通常会建议np.loadtxt,但是如果缺少数据,它们都会使用空格分隔的文件。例如,如果没有逗号分隔符,很难定义缺少的数据点。

可能起作用的类似功能是pd.read_csvpd.read_table(大多数情况下都是相同的),它确实可以解决此问题。只需确保使用这种文件格式将参数delim_whitespace设置为True

pd.read_table('TS.csv', delim_whitespace=True, header=None)