Распакуйте словарь со значением ключа, которое может быть списком

#python #pyspark

#python #pyspark

Вопрос:

Я не уверен, правильно ли я задаю этот вопрос или нет, но мне трудно понять, как распаковать значение ключа словаря, которое может иметь тип списка.

Чего я в основном пытаюсь достичь, так это иметь функцию, которая может группироваться по фрейму данных в PySpark, но условие агрегации может иметь в нем несколько значений.

 def readfilegrouped(**groupargs):
    """Group the dataframe based on the conditions"""

    dfgrouped = groupargs['groupingdf'].groupBy(groupargs['aggcol']).agg(groupargs['aggcond'])
    return dfgrouped  
 

В приведенной выше функции я хочу иметь возможность передавать несколько условий для агрегирования. Что-то вроде упомянутого ниже:

     groupargs = {'groupingdf':members, 'aggcol':"MEMBERID", 'aggcond':F.countDistinct(F.col("MEMBERID")).alias("DISTINCT_MEMBERID"), F.sum(F.col("TRANSACTIONS")).alias("TOTALTRANSACTIONS")}
    membersgrouped = readfilegrouped(**groupargs)  
 

Таблица членов:

 MEMBERID  TRANSACTIONS   DATE
 M1          2           01/01
 M1          3           01/02
 M2          5           02/01
 M3          1           01/01
 M3          2           01/02
 

Результат, который я ищу:

  MEMBERID  DISTINCT_MEMBERID  TOTALTRANSACTIONS
   M1          1               5
 

Ближе всего я подошел к использованию a defaultdict для этого, но я не уверен, как правильно определить его при вызове функции. Любая помощь будет оценена.

Комментарии:

1. list не может быть ключом dict . Вы имеете в виду кортеж?

2. Я хочу, чтобы это было значение ключа словаря, если вы посмотрите на то, чего я пытаюсь достичь выше, я пытаюсь выполнить несколько агрегаций с 1 ключом словаря, а затем распаковать этот словарь при вызове функции.

3. Можете ли вы показать нам пример того, что вы хотите?

4. Это именно то, что я показал выше. Я не уверен, что еще нужно. По сути, я хочу передать несколько условий при агрегировании.

5. предоставьте некоторые образцы данных (и желаемый результат). каковы значения members и т. Д. Кроме того, вы имели в виду membersgrouped = readfilegrouped(**args) вместо **groupargs параметра?