У меня есть следующий код Pyspark.На каждой итерации цикла я отфильтровываю все строки с определенной строкой в столбце H. Затем я вычисляю некоторые статистические показатели по столбцу G (в результате получается 3 значения).Я хочу сохранить все статистические значения в одной таблице (строки: CM, NCM, FP; столбцы: POP, POP N, POP SN, POP QP).
from pyspark.sql import SparkSession
import pandas as pd
import numpy as np
import pyspark.sql.functions as F
spark = SparkSession.builder.master("local").appName("Word Count").config("spark.some.config.option", "some-value").getOrCreate()
np.random.seed(0)
rows = 1000
df_pandas = pd.DataFrame({ 'A' : 1.,
'B' : pd.Timestamp('20130102'),
'C' : pd.Series(1,index=list(range(rows)),dtype='float32'),
'D' : np.array([3] * rows,dtype='int32'),
'E' : pd.Categorical(np.random.choice(["test","train","frog", "chicken"], rows)),
'F' : 'foo' ,
'G' : np.random.choice(['CM', 'NCM', 'FP'], rows),
'H' : np.random.choice(['POP', 'POP N', 'POP SN', 'POP QP'], rows)})
df_spark = spark.createDataFrame(df_pandas)
blocks = ['POP', 'POP N', 'POP SN', 'POP QP']
for block in blocks:
df_spark_trimmed = df_spark.filter(~F.col('H').isin(block))
counts = df_spark_trimmed.groupby('G').count()
counts.show()