注文

2017-09-27 13 views
0

私は(テストのためにハードコードされた配列から作成された)データフレームdf注文

+----+----+---+ 
|name| c1|qty| 
+----+----+---+ 
| a|abc1| 1| 
| a|abc2| 0| 
| b|abc3| 3| 
| b|abc4| 2| 
+----+----+---+ 

私はグループ化しdf1

import pyspark.sql.functions as sf 

df1 = df.groupBy('name').agg(sf.min('qty')) 
df1.show() 
+----+--------+ 
|name|min(qty)| 
+----+--------+ 
| b|  2| 
| a|  0| 
+----+--------+ 
を得るためにそれを集計していますを持っていると仮定

df1の行の予想される順番は?

ユニットテストを書いているとします。 df1と予想されるデータフレームを比較する必要があります。行の順序を無視してそれらを比較する必要があります。それを行う最善の方法は何ですか?

+2

分散システムでは意味がありません。 – mtoto

+0

ありがとうございます。確かに意味があります。 – Michael

+0

'df1.collect()'から 'set'を作成して' expected'と比較するとどうなりますか? – Michael

答えて

1

データフレーム内の行の順序は固定されていません。テストケースで期待されるデータフレームを使用する簡単な方法があります。

データフレームを比較しますか?スカラ座のために:あなたはドキュメントから減算

により除き交換する必要があるPython用

assert(df1.except(expectedDf).count == 0) 

そして

assert(expectedDf.except(df1).count == 0) 

:(その他)

減算を含む新しいデータフレームを返し このフレームの行は別のフレームには表示されません。

これはSQLのEXCEPTと同じです。

+0

答えてくれてありがとうございますが、 'df1.except(expectedDf)'はコンパイルされませんでした。私はPythonで全く新しいです。これについて詳しく説明できますか? – Michael

+0

Python用には減算を使用します。私は答えを更新しました。 –