Java将csv文件读取为矩阵

时间:2016-03-04 08:37:38

标签: java python

我刚开始编写java代码。我有使用脚本类型语言编写代码的经验。我正在尝试用java中的python重写一段代码。

下面的Python代码 -

import pandas as pd
myFile = 'dataFile'
df = pd.DataFrame(pd.read_csv(myFile,skiprows=0))
inData = df.as_matrix()

我在java中寻找一个等效于python中as_matrix的方法。此函数将数据帧转换为矩阵。

我确实查了一段时间,但找不到像python那样进行转换的方法。我可以使用第三方库或其他东西吗?任何方向都会对我有所帮助。谢谢你。

1 个答案:

答案 0 :(得分:1)

您想要做的事情非常简单,只需要最少的代码,因此我建议您自己编写代码。以下是一个示例实现:

List<String[]> rowList = new ArrayList<String[]>();
try (BufferedReader br = new BufferedReader(new FileReader("pathtocsvfile.csv"))) {
    String line;
    while ((line = br.readLine()) != null) {
        String[] lineItems = line.split(",");
        rowList.add(lineItems);
    }
    br.close();
}
catch(Exception e){
    // Handle any I/O problems
}
String[][] matrix = new String[rowList.size()][];
for (int i = 0; i < rowList.size(); i++) {
    String[] row = rowList.get(i);
    matrix[i] = row;
}

这样做非常简单:它打开一个缓冲读取器,它将逐行读取csv文件,并在根据逗号(这是您的分隔符)拆分后将内容粘贴到一个字符串数组中。然后它会将它们添加到数组列表中。我知道这可能不完美,所以之后我将该数组列表的内容转换成一个整齐的2D矩阵。希望这可以帮助。

提示:可以对这一小段代码进行大量改进(即处理尾随和前导空格,添加用户定义的分隔符等),但这应该是一个很好的起点。 / p>