replace (DataFrameNaFunctions)

Returnerar en ny DataFrame som ersätter ett värde med ett annat värde. DataFrame.replace och DataFrameNaFunctions.replace är alias för varandra. Värden för to_replace och value måste ha samma typ och kan bara vara numeriska värden, booleska värden eller strängar. value kan vara None. När du byter ut omvandlas det nya värdet till den befintliga kolumnens typ.

Syntax

replace(to_replace, value=None, subset=None)

Parameters

Parameter Type Beskrivning
to_replace bool, int, float, str, list eller dict Värdet som ska ersättas. Om en diktering value ignoreras och to_replace måste vara en mappning från ett värde till dess ersättning.
value bool, int, float, str eller None, valfritt Ersättningsvärdet. Om en lista, måste vara samma längd och typ som to_replace. Om en skalär och to_replace är en sekvens används skalären som ersättning för varje objekt.
subset list, valfritt Kolumnnamn att tänka på. Kolumner i subset som inte har någon matchande datatyp ignoreras.

Retur

DataFrame

Notes

För numeriska ersättningar måste alla värden som ska ersättas ha unika flyttalsrepresentationer. Vid konflikter (till exempel {42: -1, 42.0: 1}) används en godtycklig ersättning.

Exempel

df = spark.createDataFrame([
    (10, 80, "Alice"),
    (5, None, "Bob"),
    (None, 10, "Tom"),
    (None, None, None)],
    schema=["age", "height", "name"])

Ersätt 10 med 20 i alla kolumner.

df.na.replace(10, 20).show()
# +----+------+-----+
# | age|height| name|
# +----+------+-----+
# |  20|    80|Alice|
# |   5|  NULL|  Bob|
# |NULL|    20|  Tom|
# |NULL|  NULL| NULL|
# +----+------+-----+

Ersätt 'Alice' med null i alla kolumner.

df.na.replace('Alice', None).show()
# +----+------+----+
# | age|height|name|
# +----+------+----+
# |  10|    80|NULL|
# |   5|  NULL| Bob|
# |NULL|    10| Tom|
# |NULL|  NULL|NULL|
# +----+------+----+

Ersätt 'Alice' med 'A' och 'Bob' med 'B' i name kolumnen.

df.na.replace(['Alice', 'Bob'], ['A', 'B'], 'name').show()
# +----+------+----+
# | age|height|name|
# +----+------+----+
# |  10|    80|   A|
# |   5|  NULL|   B|
# |NULL|    10| Tom|
# |NULL|  NULL|NULL|
# +----+------+----+

Ersätt 10 med 18 i age kolumnen.

df.na.replace(10, 18, 'age').show()
# +----+------+-----+
# | age|height| name|
# +----+------+-----+
# |  18|    80|Alice|
# |   5|  NULL|  Bob|
# |NULL|    10|  Tom|
# |NULL|  NULL| NULL|
# +----+------+-----+