2017-05-12 5 views
0

以下の行の結果を同じdfデータフレームのcolに格納します。私はフィルタを行い、同じデータフレーム内の別の列に結果を格納するために、pysparkデータフレームcol ...をカウントしますか?

df.filter(F.abs(df.Px)< 0.005).count()

私はそれをどのように行うことができますか?

+0

すでにこの[stackoverflowの質問](http://stackoverflow.com/questions/33681487/how-do-i-add-a-new-column-to-a-spark-dataframe-を見てきましたusing-pyspark)?私はそこにあなたの答えを見つけることができると思います。 – titiro89

+0

お返事ありがとうございましたが、withColumn df = df.withColumn( "new"、df.filter(F.f)(0.00)).count()を使用した場合は 次のエラーが表示されます。返される値はintなので、colはColumnでなければなりません。あなたの入力をこの上に提供してください – LKA

+0

dfとあなたのFが何であるかの簡単な例を教えてください。 – titiro89

答えて

0

答えはunionを使用して行うことができます。ただし、複数の列を持つことができ、新しいカウント値を持つ行が1つだけ追加されるため、特定の列の下に行を追加するのは良い方法ではありません。

私は以下のスニペットを提供します。

from pyspark.sql import Row 

df = spark.createDataFrame(pd.DataFrame([0.01, 0.003, 0.004, 0.005, 0.02], 
             columns=['Px'])) 
n_px = df.filter(func.abs(df['Px']) < 0.005).count() # count 
df_count = spark.sparkContext.parallelize([Row(**{'Px': n_px})]).toDF() # new dataframe for count 
df_union = df.union(df_count) 

+-----+ 
| Px| 
+-----+ 
| 0.01| 
|0.003| 
|0.004| 
|0.005| 
| 0.02| 
| 2.0| 
+-----+ 
関連する問題