scala 如何根据列值从 df 中删除行

拉维库玛·雷迪·耶鲁瓦

我有这些值的数据框我需要过滤最小日期(groupby(id,count)和摘要应该更改为等于更多

id secid count date   summary
1   2     9    20170608  equal
1   3     9    20160608  equal
2   3     8    20170608  less
3   3     9    20160608  equal

我需要展示

id secid count date   summary
1   2     9    20170608  more
2   3     8    20170608  less
3   3     9    20160608  equal
文德夫

您可以使用groupByto group idand counttogether,然后使用whenandotherwise将您的汇总字段更改为more,以防您有更多date相同的idand count

//create your original DF
val df = Seq((1, 2, 9, 20170608, "equal"),
      (1, 3, 9, 20160608, "equal"),
      (2, 3, 8, 20170608, "less"),
      (3, 3, 9, 20160608, "equal"),
      (1, 2, 8, 20170608, "random"),
      (1, 2, 8, 20170608, "random"))
      .toDF("id", "secid", "count", "date", "summary")

//Create a UDF to find the length of datelist after grouping
val isMoreThanOne = udf((lst: Seq[Int], summary: String) => lst.size > 1 && summary.equals("equal"))

//apply groupby and other operations to get the result
df.groupBy("id", "count")
  .agg(collect_list("date").as("datelist"),
    max("date").as("date"),
    first("secid").as("secid"),
    first("summary").as("summary"))
  .withColumn("summary",
    when(isMoreThanOne($"datelist", $"summary"), "more").otherwise($"summary"))
  .drop("datelist")
  .show()

//    output
//    +---+-----+--------+-----+-------+
//    | id|count|    date|secid|summary|
//    +---+-----+--------+-----+-------+
//    |  1|    9|20170608|    2|   more|
//    |  1|    8|20170608|    2| random|
//    |  3|    9|20160608|    3|  equal|
//    |  2|    8|20170608|    3|   less|
//    +---+-----+--------+-----+-------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何根据另一个df中存在的列值从数据框中删除行?

来自分类Dev

根据Pandas df中另一列中的最大值删除重复行

来自分类Dev

根据列标题填充df行值

来自分类Dev

根据列值从df访问行

来自分类Dev

Python DF:如何根据条件为一行选择多列中的值?

来自分类Dev

根据已排序 df 中的索引删除行

来自分类Dev

如何根据列中的特定值序列在df中标记组

来自分类Dev

如何通过groupby查询从DF中删除行?

来自分类Dev

根据其他列与df中其他行的关系更改一行中的df列值

来自分类Dev

如何创建一个函数,根据df中其他列的值返回某个列的值?

来自分类Dev

从MultiIndex df中删除列

来自分类Dev

如何根据其他三列中的特定值将值从df1中的一列复制到df2?

来自分类Dev

根据条件删除pandas df行

来自分类Dev

遍历df列并根据行索引,列引用在数据框中返回值

来自分类Dev

遍历df列并根据行索引,列引用在数据框中返回值

来自分类Dev

Scala-根据另一个DF中的事务过滤DF中每个ID的数据

来自分类Dev

根据df中的另一列值选择df pandas中的元素

来自分类Dev

假设我不知道数据框中的列名,如何根据该列中的值对df排序?

来自分类Dev

从R中的df中删除具有相同列A值但具有不同列B值的行(反之亦然)

来自分类Dev

根据df1中的列值在df2中查找相交的值,并使用df1中的检索值创建新列(不匹配的列名)

来自分类Dev

根据列中的值范围删除行

来自分类Dev

根据列中的值删除行对

来自分类Dev

根据值删除特定列中的行

来自分类Dev

根据R中的列值删除行

来自分类Dev

如果df_2是df_1的子集-如何从df_1中删除df_2值?

来自分类Dev

根据循环中df的名称更改多个df中的列

来自分类Dev

如何通过另一个DF中的计数删除一个DF中的行?

来自分类Dev

根据列表从pandas df中删除行的最有效方法?

来自分类Dev

根据列表从pandas df中删除行的最有效方法?

Related 相关文章

  1. 1

    如何根据另一个df中存在的列值从数据框中删除行?

  2. 2

    根据Pandas df中另一列中的最大值删除重复行

  3. 3

    根据列标题填充df行值

  4. 4

    根据列值从df访问行

  5. 5

    Python DF:如何根据条件为一行选择多列中的值?

  6. 6

    根据已排序 df 中的索引删除行

  7. 7

    如何根据列中的特定值序列在df中标记组

  8. 8

    如何通过groupby查询从DF中删除行?

  9. 9

    根据其他列与df中其他行的关系更改一行中的df列值

  10. 10

    如何创建一个函数,根据df中其他列的值返回某个列的值?

  11. 11

    从MultiIndex df中删除列

  12. 12

    如何根据其他三列中的特定值将值从df1中的一列复制到df2?

  13. 13

    根据条件删除pandas df行

  14. 14

    遍历df列并根据行索引,列引用在数据框中返回值

  15. 15

    遍历df列并根据行索引,列引用在数据框中返回值

  16. 16

    Scala-根据另一个DF中的事务过滤DF中每个ID的数据

  17. 17

    根据df中的另一列值选择df pandas中的元素

  18. 18

    假设我不知道数据框中的列名,如何根据该列中的值对df排序?

  19. 19

    从R中的df中删除具有相同列A值但具有不同列B值的行(反之亦然)

  20. 20

    根据df1中的列值在df2中查找相交的值,并使用df1中的检索值创建新列(不匹配的列名)

  21. 21

    根据列中的值范围删除行

  22. 22

    根据列中的值删除行对

  23. 23

    根据值删除特定列中的行

  24. 24

    根据R中的列值删除行

  25. 25

    如果df_2是df_1的子集-如何从df_1中删除df_2值?

  26. 26

    根据循环中df的名称更改多个df中的列

  27. 27

    如何通过另一个DF中的计数删除一个DF中的行?

  28. 28

    根据列表从pandas df中删除行的最有效方法?

  29. 29

    根据列表从pandas df中删除行的最有效方法?

热门标签

归档