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 文章以获得更多帮助。
免责声明:我是这个库的作者。
我相当熟悉 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 文章以获得更多帮助。
免责声明:我是这个库的作者。