2016-12-12 12 views
0

グラフを作成するために使用する次のスニペットがあります。私はそれをPySparkで動作するように修正したいが、進める方法はわからない。問題は私がPySparkの列を反復することができず、私はこれを関数にしようとして失敗したことです。PySpark DataFrameのパンダコードを変更する

コンテキスト:データフレームは

cities = [i.City for i in df.select('City').distinct().collect()] 

stack = [] 

for city in cities: 
    df = sqlContext.sql( 'SELECT Complaint Type, COUNT(*) as `counts` ' 
          'FROM c311 ' 
          'WHERE City = "{}" COLLATE NOCASE ' 
          'GROUP BY `Complaint Type` ' 
          'ORDER BY counts DESC'.format(city)) 

    stack.append(Bar(x=df['Complaint Type'], y=df.counts, name=city.capitalize())) 

私の目標は、このtoPandas()を送信し、それをローカルにグラフ化する、次にある文字列として都市の名前だけですCityという列があります。しかし、私はColumn is not iterable以来、エラーが発生しています。これをPySparkにどうやってアプローチするのですか?

答えて

1

あなただけのことができます:

typeによって cityとピボットによって、またはグループ)
from pyspark.sql.functions import upper, col 

pdf = df.withColumn("city", upper(col("city"))) \ 
    .groupBy("Complaint Type").pivot("city").count() \ 
    .toPandas() 

し、そこからそれを使用しています。

関連する問題