Как использовать groupby с элементами массива в Pyspark? - PullRequest
1 голос
/ 25 февраля 2020

Я выполняю операцию groupBy на фрейме данных в Pyspark, и мне нужно сгруппировать список, который может состоять из одной или двух функций. Как я могу выполнить это?

 record_fields = [['record_edu_desc'], ['record_construction_desc'],['record_cost_grp'],['record_bsmnt_typ_grp_desc'], ['record_shape_desc'],
['record_sqft_dec_grp', 'record_renter_grp_c_flag'],['record_home_age'],
['record_home_age_grp','record_home_age_missing']]


for field in record_fields: 
    df_group = df.groupBy('year', 'area', 'state', 'code', field).sum('net_contributions')
    ### df write to csv operation

Моя первая мысль должен был создать список списков и передать его групповой операции, но я получаю следующую ошибку:

TypeError: неверный аргумент, а не строка или столбец: ['record_edu_des c'] типа. Для литералов столбцов используйте функцию «lit», «array», «struct» или «create_map».

Как мне сделать эту работу? Я открыт для других способов сделать это.

1 Ответ

2 голосов
/ 25 февраля 2020

Попробуйте (обратите внимание, что * [звездочка] перед field):

for field in record_fields: 
    df_group = df.groupBy('year', 'area', 'state', 'code', *field).sum('net_contributions')

Также взгляните на этот вопрос , чтобы узнать больше о звездочке в python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...