read - muestra valores de columna distintos en el marco de datos pyspark: python
rdd to dataframe pyspark (4)
Sugiera la alternativa de marco de datos pyspark para Pandas
df[''col''].unique()
Unique
df[''col''].unique()
.
Quiero enumerar todos los valores únicos en una columna de marco de datos pyspark.
No es el tipo de SQL (plantilla de registro y consulta SQL para valores distintos).
Además, no necesito
groupby->countDistinct
, en cambio quiero verificar VALORES distintos en esa columna.
Esto debería ayudar a obtener valores distintos de una columna:
df.select(''column1'').distinct().show()
Puede usar
df.dropDuplicates([''col1'',''col2''])
para obtener solo filas distintas basadas en colX en la matriz.
Supongamos que estamos trabajando con la siguiente representación de datos (dos columnas,
k
y
v
, donde
k
contiene tres entradas, dos únicas:
+---+---+
| k| v|
+---+---+
|foo| 1|
|bar| 2|
|foo| 3|
+---+---+
Con un marco de datos Pandas:
import pandas as pd
p_df = pd.DataFrame([("foo", 1), ("bar", 2), ("foo", 3)], columns=("k", "v"))
p_df[''k''].unique()
Esto devuelve un
ndarray
, es decir,
array([''foo'', ''bar''], dtype=object)
Solicitó una "alternativa de marco de datos pyspark para pandas df [''col'']. Unique ()". Ahora, dado el siguiente marco de datos de Spark:
s_df = sqlContext.createDataFrame([("foo", 1), ("bar", 2), ("foo", 3)], (''k'', ''v''))
Si desea el
mismo
resultado de Spark, es decir, un
ndarray
, use
toPandas()
:
s_df.toPandas()[''k''].unique()
Alternativamente, si no necesita un
ndarray
específicamente y solo desea una lista de los valores únicos de la columna
k
:
s_df.select(''k'').distinct().rdd.map(lambda r: r[0]).collect()
Finalmente, también puede usar una lista de comprensión de la siguiente manera:
[i.k for i in s_df.select(''k'').distinct().collect()]
collect_set
puede ayudar a obtener valores únicos de una columna dada de
pyspark.sql.DataFrame
df.select(F.collect_set("column").alias("column")).first()["column"]