スパーク列をバイナリフラグである新しい列で上書きします。Sparkデータフレーム内の既存の列全体を新しい列で上書きする方法は?
私は列id2を直接上書きしようとしましたが、なぜPandasのインプレイス操作のようには機能しませんか?
withcolumn()を使用して新しい列を作成し、drop()メソッドを使用して古い列を削除する方法はありますか?
私はスパークのデータフレームが不変であることを知っています。その理由は、withcolumn()を使用せずに上書きする別の方法ですか?& drop()?
df2 = spark.createDataFrame(
[(1, 1, float('nan')), (1, 2, float(5)), (1, 3, float('nan')), (1, 4, float('nan')), (1, 5, float(10)), (1, 6, float('nan')), (1, 6, float('nan'))],
('session', "timestamp1", "id2"))
df2.select(df2.id2 > 0).show()
+---------+
|(id2 > 0)|
+---------+
| true|
| true|
| true|
| true|
| true|
| true|
| true|
+---------+
# Attempting to overwriting df2.id2
df2.id2=df2.select(df2.id2 > 0).withColumnRenamed('(id2 > 0)','id2')
df2.show()
#Overwriting unsucessful
+-------+----------+----+
|session|timestamp1| id2|
+-------+----------+----+
| 1| 1| NaN|
| 1| 2| 5.0|
| 1| 3| NaN|
| 1| 4| NaN|
| 1| 5|10.0|
| 1| 6| NaN|
| 1| 6| NaN|
+-------+----------+----+
火花として
nan
を扱いたくないことができますと仮定していますので、私は、nan
との比較を追加しましたそれがあなたが探しているものならば、パンダのようにインプレイスを書く。 DataFramesは不変構造です。上書きすることはできません。 – eliasah