当前位置: 首页 > 知识库问答 >
问题:

在 pyspark 数据帧中显示不同的列值

牛嘉谊
2023-03-14

使用pyspark数据帧,你如何做相当于熊猫df['col']unique()。

我想列出pyspark数据框列中的所有唯一值。

不是 SQL 类型方式(注册模板,然后 SQL 查询不同的值)。

此外,我不需要< code>groupby然后< code>countDistinct,而是希望检查该列中的不同值。

共有3个答案

湛钊
2023-03-14
匿名用户

您可以使用< code>df.dropDuplicates(['col1 ',' col2'])来获取数组中基于colX的唯一行。

咸昊昊
2023-03-14

假设我们正在处理以下数据表示形式(两列,kv,其中 k 包含三个条目,其中两个是唯一的:

+---+---+
|  k|  v|
+---+---+
|foo|  1|
|bar|  2|
|foo|  3|
+---+---+

与熊猫数据帧:

import pandas as pd
p_df = pd.DataFrame([("foo", 1), ("bar", 2), ("foo", 3)], columns=("k", "v"))
p_df['k'].unique()

这将返回一个< code>ndarray,即< code >数组(['foo ',' bar'],dtype=object)

您要求“熊猫 df['col']unique()的 pyspark 数据帧替代方案”。现在,给定以下 Spark 数据帧:

s_df = sqlContext.createDataFrame([("foo", 1), ("bar", 2), ("foo", 3)], ('k', 'v'))

如果希望从Spark获得相同的结果,即ndarray,请使用toPandas()

s_df.toPandas()['k'].unique()

或者,如果您不需要专门的 ndarray,而只需要一个列 k 的唯一值列表:

s_df.select('k').distinct().rdd.map(lambda r: r[0]).collect()

最后,您还可以使用列表理解,如下所示:

[i.k for i in s_df.select('k').distinct().collect()]

景鸿才
2023-03-14

这应该有助于获取列的不同值:

df.select('column1').distinct().collect()

请注意<代码>。collect()对于可以返回多少个值没有任何内置限制,因此这可能是一个很慢的用法< code >。请改为show()或添加< code >。在< code >之前限制(20)。collect()来管理它。

 类似资料:
  • 请为Pandas提供pyspark dataframe替代方案。 另外,我不需要,而是希望检查该列中的distinct值。

  • 当我试图打印我的数据集的单个列时,它显示错误 KeyError回溯(最近一次调用上次)~\anaconda3\lib\site packages\pandas\core\index\base。py in get_loc(自身、键、方法、公差)2645 try:- 熊猫库\索引。大熊猫中的pyx_图书馆。指数IndexEngine。获取_loc() 熊猫库\索引。大熊猫中的pyx_图书馆。指数Ind

  • 我想知道如何获取日期列的值。键入df时,“日期”列不显示。柱。我正试图用df将这个df转换成一个Json文件。to_json(),它获取除日期以外的所有值。谢谢大家。 输入[49]:输入(df)输出[49]:熊猫。果心框架数据帧

  • 我正在尝试连接两个数据帧。 我创建了别名并根据这篇文章引用它们:Spark Dataframe区分具有重复名称的列 但是,当它点击<code>fillna()s的信息。 但我一直有这个错误: 下面是连接的输出: 有人可以解释为什么这不起作用吗?我不想创建单独的列,因为它们应该在上加入。

  • 我正在尝试筛选将< code>None作为行值的PySpark数据帧: 我可以使用字符串值正确过滤: 但这失败了: 但是每一类都有明确的价值。这是怎么回事?

  • 我有两个数据帧,它们共享多个公共列,如下所示: 第一个: 而第二个: 我想保留中的行,其列也存在于中。例如,df2的第27行有值,对于,这些值并不都存在于(因为df1只对列有值