私は以下のようなデータフレームを持っています
+---+------------+----------------------------------------------------------------------+
|id |indexes |arrayString |
+---+------------+----------------------------------------------------------------------+
|2 |1,3 |[WrappedArray(3, Str3), WrappedArray(1, Str1)] |
|1 |2,4,3 |[WrappedArray(2, Str2), WrappedArray(3, Str3), WrappedArray(4, Str4)] |
|0 |1,2,3 |[WrappedArray(1, Str1), WrappedArray(2, Str2), WrappedArray(3, Str3)] |
+---+------------+----------------------------------------------------------------------+
arrayStringをループし、最初の要素をインデックスとして、2番目の要素を文字列として取得したい。次に、arrayStringのインデックスに対応する文字列でインデックスを置き換えます。以下のような出力が必要です。
+---+---------------+
|id |replacedString |
+---+---------------+
|2 |Str1,Str3 |
|1 |Str2,Str4,Str3 |
|0 |Str1,Str2,Str3 |
+---+---------------+
以下のudf関数を使用してみました。
val replaceIndex = udf((itemIndex: String, arrayString: Seq[Seq[String]]) => {
val itemIndexArray = itemIndex.split("\\,")
arrayString.map(i => {
itemIndexArray.updated(i(0).toInt,i(1))
})
itemIndexArray
})
これによりエラーが発生し、希望する出力が得られません。これを達成する他の方法はありますか。順序を失わずにインデックスを文字列で置き換えたいので、爆発と結合は使用できません。
。
回答 1 件
関連記事
- Pandasで特定の列の空の値を特定の値に置き換える方法は?
- 別の列の日付から1つの列の値を引く
- 値が別のリストにある場合に条件付きで列を合計する方法
- 列の値が別の列のリストにある行をフィルタリングしますか?
- SQL/powerBIの別の列の値に従って新しい列を作成します
- データフレーム内の別の列に対する1つの列の統計を計算する方法は?
- SQL CASE結果を使用して列を比較し、別のケース結果を取得する方法
- pandasデータフレームの各行のインデックス値、列名、および列データを印刷するにはどうすればよいですか?
- データの行をExcelの別のシートにコピーし、列VBAを追加します
- ビンがパンダの別の列によって定義されているときに、1つの列の平均のヒストグラムをプロットする方法
関連した質問
- 任意の関数を使用して、scalaの行のStruct Typeの要素を取得します
- PrefixSpanの後にデータフレームを分割する
- SparkのDataframeを使用して製品ケースクラスにデータをロードする方法
- データフレーム:列名のリストによるGroupBy
- UTCunixtimeを同じタイムゾーンのタイムスタンプにキャストする
- Spark SQL UDFキャスト戻り値
- Spark SQLでDoubleの配列をStringにキャストする
- CollectionAccumulator [(Double、Double)]をSparkdataFrameに変換する方法は?
- Sparkは、存在しない列のフィルタリング/選択を可能にします
- Scalaのデータフレーム内のリスト要素を削除する
udf
を作成できます 必要な結果を得るために以下のように、array
の配列に変換しますmap
へmap
のキーとしてインデックスを見つける 。出力:
お役に立てれば!