Python panda read_csv:我们可以在一行中将STRING加载到NUMPY吗?

时间:2017-02-27 18:35:32

标签: python pandas numpy

我对熊猫的read_csv参数感到困惑。

我想用支持向量机制作一个分类器。要使用分类器,我需要向量X和Y都是numpy。 我有一个csv文件,其中有两列:

  1. 第一列是数字(目标),例如1或0

  2. 第二列是带有“”分隔符的矢量(特征),例如12 32 63 73 563 34。

  3. 我遇到的问题:

      来自第一列的
    1. 值正在加载为'numpy.int32'

    2. 来自第二列的值被加载为'str',而我希望它们是numpy数组。

      import pandas as pd
      import numpy as np
      
      DF = pd.read_csv("C:\\STUFF\\foo.csv")
      df = DF.head(2)
      
      X = df["firstcol"]
      target = X.values
      for i in target:
          print (type(i))
      
      Y = df["secondcol"]
      feature = Y.values
      for j in feature:
          print (type(j))  
      
    3. 所以输出是

      <class 'numpy.int64'>
      <class 'numpy.int64'>
      <class 'str'>
      <class 'str'>
      

      问题是:将第二列转换为numpy的最快和最合适的方法是什么?

3 个答案:

答案 0 :(得分:2)

试试这个:

df["secondcol"].apply(lambda x: np.array(x.split()).astype(int))

答案 1 :(得分:0)

这对我有用:

t = ['12 32 63 73 563 34']
y = [int(x) for x in str.split(" ") for str in t]
print(y)

打印:[12, 32, 63, 73, 563, 34]。这仅适用于所有单元格都是您指定的格式且其中没有任何字母的情况。

答案 2 :(得分:0)

假设您的csv文件看起来像这样:

setTimeout(function(){
    $(".form-signin").fadeOut(500, function(){
        $(".signin-form").load("successreg.php");
    });
}, 5000);

阅读它的逻辑方式越多:

1,12 32 63 73 563 34
2,12 32 63 73 563 33
4,12 32 63 73 563 35

然后你直接在cols中获得数据,第一列作为索引。每一行都是(像)一个numpy数组。

df=pd.read_csv('data.csv',header=None,sep='[ ,]',engine='python',index_col=0)