如何使用Wolfram Mathematica修改列中的数据?

我正在处理一个Dataset对象,其中包含一个名为Property的列。

数据如以下图片所示:

这种类型的数据列

根据范围,我希望分配一个新值,并最终替换整个相关列。例如,如果范围是500-5000,我希望得到值1;如果是5000-50000,我希望赋值2,依此类推。


回答:

据我理解,你想通过修改数据集来重新编码其中的一列。据我所知,数据集并不是真正设计为可变类型的。如果你能接受这一点,这里有两种方法可以继续进行。

首先,我们来获取一些人造数据。

ds = Dataset[<|"x" -> RandomInteger[10],      "y" -> Interval[{10^#, 10^(# + 1)}]|> & /@ Range[5]]

现在假设我们想用函数f重新编码第二列:

ds[All, {2 -> f}]

请注意,原始数据集没有改变。(通常这是件好事。)这里有一个可以尝试的示例函数。

f[x_Interval] := Log[10, x[[1, 1]]]ds[All, {2 -> f}]

现在,这个方法的一个大问题是,你的新数据集有一列名称完全相同但解释完全不同。如果这让你感到困扰,你可以选择用一个新名称添加到数据集中。

Append[#, "y2" -> f[#y]] & /@ ds

编辑:

那些美元符号怎么办?除非你展示给我们一个条目的完整形式,我只能猜测。所以我猜测以下人造数据足够接近以供参考:

ds = Dataset[<|"x" -> RandomInteger[10],  "y" -> Quantity[Interval[{10^#, 10^(# + 1)}], "USDollars"]|> & /@ Range[5]]

这意味着我们需要对f做一个小改动:

f[Quantity[Interval[{x_, _}], _]] := Log[10, x]

然后我们可以像之前一样替换或添加:

ds[All, {2 -> f}]Append[#, "y2" -> f[#y]] & /@ ds

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注