首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >巨蟒熊猫在斯卡拉切

巨蟒熊猫在斯卡拉切
EN

Stack Overflow用户
提问于 2018-09-29 21:01:36
回答 2查看 724关注 0票数 0

如何才能pd.cut (对数组进行分叉),https://pandas.pydata.org/pandas-docs/stable/generated/pandas.cut.html

pd.cut(np.array(1,7,5,4,6,3),3) . (0.994,3.0,7.0),(3.0,5.0),(3.0,5.0),(3.0,5.0),(5.0,7.0),.类别(3,intervalfloat64):(0.994,3.0 < (3.0,5.0)

即阵列的分离

代码语言:javascript
运行
复制
Seq(1, 7, 5, 4, 6, 3)

放进垃圾箱,给出一张劈开的清单

代码语言:javascript
运行
复制
Seq(3,5)

在scala中完成吗?

编辑

也许对熊猫文件的引用是有误导性的/不够清楚。我希望将指定的数组(假设整数)从以下位置分离为组(桶):

代码语言:javascript
运行
复制
[b_1, b_2, ...b_n[

例如,在这种情况下,有两个桶状条件的情况下,接收n+1组类似于:

代码语言:javascript
运行
复制
Seq(("[0-3]", Seq(1,3)),("4-5", Seq(4,5)), ("is 6-[", Seq(7))

也就是说,给离散群分配一个连续的数字范围。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-30 06:48:01

你的问题有点含糊。熊猫cut采用8个参数,其中大多数参数是可选的,具有缺省意义或值,其中一些参数可以接受不同的数据类型(例如,可以是IntSeq[Int]bins )。我想你不是在找什么东西来模仿各种各样的行为。这可能比大多数居民愿意贡献的代码更多。

这里有一个简单的小问题,我认为,可以理解您在问题的编辑部分中描述的内容。

代码语言:javascript
运行
复制
def pdCut(x :Seq[Int], bins :Seq[Int]) :Seq[(String,Seq[Int])] = {
  val bs = bins.sorted.foldRight(Seq(("@",Seq(Int.MaxValue)))){case (b,v) =>
    val (str,sq) = v.head
    (s"$b", Seq(b)) +: (s"$b-$str", b +: sq) +: v.tail
  }
  val (str,sq) = bs.head
  val xs = (s"@-$str", Int.MinValue +: sq) +: bs.tail
  x.map(n => xs.find(_._2(1) >= n).get)
}

如果负数不是问题,您可以用Int.MinValue替换0

用法:

代码语言:javascript
运行
复制
pdCut(Seq(3,6,4,1,9,5), Seq(3,5))
//res0: Seq[(String, Seq[Int])] = Seq((@-3,Seq(-2147483648, 3)), (5-@,Seq(5, 2147483647)), (3-5,Seq(3, 5)), (@-3,Seq(-2147483648, 3)), (5-@,Seq(5, 2147483647)), (3-5,Seq(3, 5)))
票数 2
EN

Stack Overflow用户

发布于 2018-09-29 22:01:18

也许不是你想要的,但你可以试着做一个groupBy

代码语言:javascript
运行
复制
scala> val x=Seq(1,7,5,4,6,3).groupBy(_/3)
x: scala.collection.immutable.Map[Int,Seq[Int]] = Map(2 -> List(7, 6), 1 -> List(5, 4, 3), 0 -> List(1))

所以第一个回收站包含1

代码语言:javascript
运行
复制
scala> x(0)
res6: Seq[Int] = List(1)

第二个bin包含5,4,3

代码语言:javascript
运行
复制
scala> x(1)
res7: Seq[Int] = List(5, 4, 3)

最后一个回收站包含7,6

代码语言:javascript
运行
复制
scala> x(2)
res8: Seq[Int] = List(7, 6)

如果您处理的是dataframe https://spark.apache.org/docs/latest/ml-features.html#quantilediscretizer上的列,则可以使用https://spark.apache.org/docs/latest/ml-features.html#quantilediscretizer

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52572518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档