C# Pandas read_csv 等效

C# Pandas read_csv Equivalent

我相当熟悉 pandas 数据帧,但我目前正在使用 C# DataTables。我正在尝试将带有指定分隔符的 csv 读取到数据表中。在 python 中,这将与

一样简单
import pandas 

df = pandas.read_csv(csvPath, delimiter = "|")

在 C# 中是否有类似的东西

string csvPath = "myPath.csv";

DataTable dt = new DataTable();

dt.CsvHelper.CsvReader(csvPath, delimiter = "|");

我查看了 CsvHelper 文档,但这些示例假设您已经创建了一个镜像 csv 的对象。我的情况是,我不知道 CSV 会是什么样子,因此无法创建映射 class。

我愿意使用 CsvHelper 以外的东西,我只是想确保它在处理“,”以外的分隔符时是健壮的。

您可以使用此存储库中的 CsvDataReader https://github.com/ttustonic/LightGBMSharp

Example目录下有一个CsvDataReader,是一个独立的文件,其他的不需要

它实现了一个IDataReader接口,可用于加载DataTable

这是一个例子。假设您的 csv 文件如下所示:

Id  Name    Age
1   Mark    100
2   Joe 32
3   Betty   55

此代码:

var dt = new DataTable();
using (var rdr = new CsvDataReader(file, true)) // set true if the csv has header line, false otherwise
{
    //rdr.ColumnTypes = new Type[] { typeof(int), typeof(string), typeof(int) }; Uncomment this if you know the structure of the csv
    dt.Load(rdr);
}
foreach (DataRow r in dt.Rows)
{
    for (int i = 0; i < dt.Columns.Count; i++)
        Console.Write($"{dt.Columns[i]}:{r[i]}  ");
    Console.WriteLine("");
}

将给出以下输出:

Id:1  Name:Mark  Age:100
Id:2  Name:Joe  Age:32
Id:3  Name:Betty  Age:55

默认分隔符是制表符,可以在构造函数中更改。

Cinchoo ETL - 一个开源库,只需几行代码即可轻松将 CSV 转换为 DataTable

using (var p = new ChoCSVReader("sample.csv").WithFirstLineHeader())
{
    var dt = p.AsDataTable();
}

查看 CodeProject 文章以获得更多帮助。

免责声明:我是这个库的作者。