c# - 在 C# 中使用 Deedle 添加两列
问题描述
给定以下 CSV 文件
A,B
2,3
5,7
9,11
我想添加两列,导致
A,B,C
2,3,5
5,7,12
9,11,20
使用 C# 和 Deedle。
using Deedle;
using System.IO;
using System.Linq;
namespace NS
{
class AddTwoColumns
{
static void main(string[] args)
{
var root = "path/to";
var df = Frame.ReadCsv(Path.Combine(root, "data.csv"));
var a = df.GetColumn<int>("A");
var b = df.GetColumn<int>("B");
var c = df.Select(x => x.a + x.b);
df.AddColumn("C", c);
df.Print();
}
}
}
参考资料 和教程(series, frame )都不 是特别有启发性。
df.Select()
这个简单的操作正确的是什么?
解决方案
a
并且b
正是Deedle.Series
您可以对其进行数值运算的对象。因此,您只需添加两个系列即可:
// simply add the series
var c = a + b;
df.AddColumn("C", c);
df.Print();
// output
A B C
0 -> 2 3 5
1 -> 5 7 12
2 -> 9 11 20
统计和计算部分(您链接到的页面)简要提到了算术运算。它还提供了有关缺失数据的注释,您可能需要考虑:
逐点和标量运算符会自动传播缺失的数据。当计算
s1 + s2
并且其中一个系列不包含某个键的数据时k
,则生成的系列将不包含 的数据k
。
推荐阅读
- python - 根据职位数据计算理想总统候选人的 Python 程序?
- autohotkey - AutoHotKey 如何在按住键时忽略它
- php - Woocommerce get_cart_contents_count() 在使用未登录时不起作用
- powershell - 如何使用 Powershell 重命名
- ruby-on-rails - 允许在 Rails 中向某些用户上传更大的文件大小
- pandas - 计算取决于前一行的值
- python - 为什么 request.FILES["file"].open() 是 None,尽管 request.FILES.["file"].name 效果很好?
- c - 有没有一种传统的方法可以在 C 语言中精确地花费一个时钟周期?
- c++ - 如何将结构向量与向量一起使用?
- webassembly - WebAssembly 导出的函数返回未定义