現在、データフレームを入力として受け取るpyspark.ml.clustering.KMeans
モジュールを使用するには、RDDをcontingency tableに変換しようとしています。RDDからコンティンジェンシーへの変換テーブル:Pyspark
私は次のような構造が見えmyrdd.take(K)
、(Kは、いくつかの番号です)を実行します。
[[u'user1' 、( 'ITM1'、3)、...、( 'ITM2を( 'itm2'、2)、...、uuuser2 '、(' itm1 '、7)、...、 (' itm2 '、4)]、...、[u'usern' )、...、( 'itm3'、10)]]
各リストには、最初の要素としてエンティティが含まれ、このエンティティが気に入ったすべての項目とその数の集合がタプル。
私の目的は、上記のコンティンジェンシーテーブルに似ているDataFrame
のスパークに変換することです。
+----------+------+----+-----+
|entity |itm1 |itm2|itm3 |
+----------+------+----+-----+
| user1 | 3| 1| 0|
| user2 | 7| 4| 0|
| usern | 0| 2| 10|
+----------+------+----+-----+
次のリンクで引用されたように私はdf.stat.crosstab
メソッドを使用しています
、それは私が欲しいものとほぼ近いです。
しかし、もう一つのカウントフィールド上記タプルのように存在する場合、すなわち、('itm1',3)
分割表(またはエンティティ項目マトリックス)の最終結果には、この値を組み込む(または追加)する方法。
もちろん、私は上記のRDD
のリストを行列に変換し、それらをcsvファイルとして書き込んだ後、DataFrame
として読み戻します。
DataFrameを使用して簡単に行う方法はありますか?
可能な重複/ question/30244910/pivot-spark-dataframe) – zero323
この質問は「直接」重複していますが、[リンク提供](http://stackoverflow.com/a/35676755/3415409)では@ zero323に同意しません。代替手段tを供給するoあなたが探していることをやる。 – eliasah
この質問への答えは私のここ最近の質問から見ることができます[RDDからデータフレームへの変換](http://stackoverflow.com/questions/37552052/convert-a-rdd-of-tuples-of-varying-データ・フレーム・イン・スパーク(data-in-spark))。これはもともとはRDD構造をデータフレームに変換することを意図していましたが、pivoting、groupby、sumを使用する答えの最後の部分がこの問題の解決策を提供します。もし誰かが重複していると感じたら、私は現在の質問を閉じます。 – Rkz