Сгенерируйте выходной фрейм данных, как показано ниже, в pyspark:

Входной фрейм данных приведен ниже:

+---+---+---+---+
|  A|  B|  C|  D|
+---+---+---+---+
| 10| 20| 11| 20|
| 20| 11| 10| 99|
| 10| 11| 20|  1|
| 30| 12| 20| 99|
| 10| 11| 20| 20|
| 40| 13| 15|  3|
| 30|  8| 11| 99|

Я использую соединение, но не получаю желаемого результата. Не могли бы вы сгенерировать выходной фрейм данных, как показано ниже, в pyspark:

+---+-------+---+-------+---+-------+---+-------+
|  A|A_Count|  B|B_Count|  C|C_Count|  D|D_Count|
+---+-------+---+-------+---+-------+---+-------+
| 10|      3|  8|      1| 10|      1|  1|      1|
| 20|      1| 11|      3| 11|      2|  3|      1|
| 30|      2| 12|      1| 15|      1| 20|      2|
| 40|      1| 13|      1| 20|      3| 99|      3|
+---+-------+---+-------+---+-------+---+-------+

можешь ли ты опубликовать свой код

Kashyap 30.07.2024 18:45
1
1
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Приведенный ниже код работает для меня.

list_of_sdf =[]
for coll in ab.columns:
  w0=Window.orderBy(monotonically_increasing_id())
  ab=ab.withColumn(coll,col(coll).cast(IntegerType()))
  ab1=ab.groupBy(col(coll)).agg(count(col(coll)))
  
  
  list_of_sdf.append(ab1.select([coll,f"count({coll})"]).sort([coll]).withColumn("row",row_number().over(w0)))
def join_dfs(df1, df2, join_column = "row"):
    return df1.join(df2, on=join_column, how='inner')
 
# Perform successive joins using reduce
if list_of_sdf:
    joined_df = reduce(join_dfs, list_of_sdf)

else:
    print("The list of DataFrames is empty.")

Это сработало для меня. Спасибо!

Satyam Singh 31.07.2024 09:49

Другие вопросы по теме

Похожие вопросы

Bs4-подход к странице википедии: получение информационного окна
Как фильтровать фрейм данных pandas для строк, содержащих все подстроки в заданном списке
Почему PyCharm запрашивает старую версию Pandas и как ее остановить?
Почему предупреждение: «FutureWarning: установка элемента несовместимого типа d устарела и вызовет ошибку в будущей версии pandas»?
В кадре данных замените значения из одного столбца с несколькими условиями, а не в одной строке, в другой столбец
Каков наиболее эффективный способ многопроцессорной обработки очень большого кадра данных?
Сортировать фрейм данных Pandas по промежуточной сумме и подсчитывать
Как я могу отфильтровать df «A», используя в качестве условия сравнение с df «B»?
Преобразовать время в секунды [удалив миллисекунды]
Группировка фреймов данных Pandas с применением функции с переменным количеством аргументов