Я пытаюсь объединить логику для этого фрагмента кода в PySpark, чтобы уменьшить количество повторений кода. Любое руководство будет по достоинству оценено:
col0 = when(visit[1] == '0', to_date(visit[0])).otherwise(None)
col1 = when(visit[1] == '1', to_date(visit[0])).otherwise(None)
2 ответа
Вы можете сделать это, используя назначение деструктурирования и выражение генератора:
col0, col1 = (when(visit[1] == c, to_date(visit[0])).otherwise(None) for c in '01')
col = {i: when(visit[1] == f'{i}, to_date(visit[0])).otherwise(None) for col in (1,2)}
Примечание: для 2 столбцов вы получаете одну строку, но дополнительные затраты с точки зрения субъективной ясности кода значительно превышают выигрыш; предлагаемое решение, вероятно, стоит только для 3+ столбцов
Похожие вопросы
Новые вопросы
python
Python - это мультипарадигмальный динамически типизированный многоцелевой язык программирования, разработанный для быстрого (для изучения, использования и понимания) и для обеспечения чистого и унифицированного синтаксиса. Обычно используются две похожие, но несовместимые версии Python, Python 2.7 и 3.x. Для специфичных для версии вопросов Python добавьте тег [python-2.7] или [python-3.x]. При использовании варианта или библиотеки Python (например, Jython, PyPy, Pandas, Numpy), пожалуйста, включите их в теги.