Начиная с Spark 1.6 вы можете использовать функцию pivot
на GroupedData
и предоставить обобщенное выражение.
pivoted = (df
.groupBy("ID", "Age")
.pivot(
"Country",
['US', 'UK', 'CA']) # Optional list of levels
.sum("Score")) # alternatively you can use .agg(expr))
pivoted.show()
## +---+---+---+---+---+
## | ID|Age| US| UK| CA|
## +---+---+---+---+---+
## |X01| 41| 3| 1| 2|
## |X02| 72| 4| 6| 7|
## +---+---+---+---+---+
Уровни могут быть опущены, но если они могут повысить производительность и служит в качестве внутреннего фильтра.
Этот метод по-прежнему относительно медленный, но, конечно, бит вручную передает данные вручную между JVM и Python.
Беспроводные Инструменты пакет - которых iwlist является частью - также, содержит Беспроводную Библиотеку Помощника Инструментов. Необходимо включать iwlib.h и ссылка с libiw.a (т.е. добавить-liw). Затем ищите документацию для функция iw_set_ext. параметр SIOCSIWSCAN будет наиболее полезен. Для примера того, как использовать этот интерфейс, смотрите на источник KWifiManager в библиотеке KDE (см.: Interface_wireless_wirelessextensions:: метод get_available_networks ). С другой стороны, можно также загрузить Беспроводной исходный код Инструментов и смотреть на то, как iwlib iw_set_ext функция также используется для сканирования в iwlist.c.
Что касается полномочий, я предполагаю, что процесс должен будет работать как корень для выполнения сканирования. Я хотел бы знать, могло ли это быть сделано иначе также.
, Так как Вы используете Ubuntu 8.04 , пакет libiw-dev должен быть полезным.