Я знаю, что это кажется очень простым вопросом, и я искал для него google и stackoverflow, но не смог найти именно то, что мне нужно.
Я собрал некоторые данные из одного кадра данных config
в другой config1
со следующим кодом. Основу кода предоставил другой участник stackoverflow. Спасибо @Sunny Shukla.
exprs=map(lambda c: max(c).alias(c), config.columns)
config1=config.groupBy(["seq_id","tool_id"])\
.agg(f.count(f.lit(1)).alias('count'),
*exprs).where('count = 1').drop('count')
Фрейм данных config
имеет 20 столбцов, а config1
df имеет 22 столбца, потому что я сгруппировал его, используя 2 столбца seq_id
и tool_id
, но сопоставил все исходные столбцы, чтобы сохранить исходные имена столбцов (я уверен, что есть более элегантный способ сделать это). Результирующий фрейм данных config1
поэтому имеет дублированные столбцы seq_id
и tool_id
. Если я сделаю config1.drop('seq_id','tool_id')
, тогда он отбросит 4 столбца, и я получу 18 столбцов вместо 20. Есть ли более элегантный способ сделать это без написания UDF? Спасибо