2016-10-27 30 views
3

私はこのようになりますpySparkのデータフレームを持っている:複数の条件

+-------------+----------+ 
|   sku|  date| 
+-------------+----------+ 
|MLA-603526656|02/09/2016| 
|MLA-603526656|01/09/2016| 
|MLA-604172009|02/10/2016| 
|MLA-605470584|02/09/2016| 
|MLA-605502281|02/10/2016| 
|MLA-605502281|02/09/2016| 
+-------------+----------+ 

は私がSKUでグループ化する、その後、最小と最大の日付を計算します。私はこれを行う場合:

df_testing.groupBy('sku') \ 
    .agg({'date': 'min', 'date':'max'}) \ 
    .limit(10) \ 
    .show() 

行動は、私が唯一skumax(date)列を取得パンダと同じです。

df_testing.groupBy('sku') \ 
    .agg({'day': ['min','max']}) \ 
    .limit(10) \ 
    .show() 

しかしpySparkでこれが動作しない、と私はjava.util.ArrayList cannot be cast to java.lang.Stringエラーを取得する:パンダで、私は通常、私が望む結果を得るために、次の手順を実行します。誰でも正しい構文を教えてください。

ありがとうございました。

答えて

7

dictは使用できません。使用:

>>> from pyspark.sql import functions as F 
>>> 
>>> df_testing.groupBy('sku').agg(F.min('date'), F.max('date')) 
+1

ありがとうございます!これは問題を解決します。当初、私は 'from pyspark.sql.functions import min、max'とあなたが提案したアプローチをF.を使わずに試みました。おそらく、PythonはSQL関数をネイティブ関数と混同していたかもしれません。 –