Вы не выполняете одно и то же в случаях с пандами и дасками: для последнего у вас есть axis=1
, так что вы заканчиваете тем, что заменяете любое значение, которое встречается менее двух раз в данной строке , что это все из них.
Если вы перейдете на axis=0
, вы увидите, что получили исключение. Это связано с тем, что для вычисления, скажем, первого раздела вам потребуется, чтобы весь массив данных также передавался в лямбда-функцию - иначе как вы могли бы получить value_counts?
Решением вашей проблемы было бы получить значение считается отдельно. Вы можете явно вычислить это (результат небольшой) или передать его в лямбду. Кроме того, обратите внимание, что этот путь означает, что вы можете избежать использования apply
в пользу map
и сделать вещи более явными. Здесь я выбираю только один столбец, вы можете зациклить.
vc = ddf.A.value_counts().compute()
vc /= vc.sum() # because dask's value_count doesn't normalise
def simple_map(df):
df['A'] = df['A'].map(lambda x: x if vc[x] > 0.5 else 'other')
return df
ddf.map_partitions(simple_map, meta=df[:0]).compute()
Анализ Джордана о том, почему массив $ _POST не заполнен, является правильным. Однако вы можете использовать
$data = file_get_contents("php://input");
, чтобы просто получить тело http и обработать его самостоятельно. См. Потоки ввода / вывода PHP .
С точки зрения протокола это на самом деле более правильно, так как вы все равно на самом деле не обрабатываете данные составной формы http. Кроме того, используйте application / json как тип контента при публикации вашего запроса.
Я полагаю, что вы получаете пустой массив, потому что PHP ожидает, что опубликованные данные будут в формате строки запроса (ключ = значение и ключ1 = значение1).
Попробуйте изменить запрос curl на:
curl -i -X POST -d 'json={"screencast":{"subject":"tools"}}' \
http://localhost:3570/index.php/trainingServer/screencast.json
и посмотрите, поможет ли это кому-нибудь.
Вы должны избегать таких кавычек:
curl -i -X POST -d '{\"screencast\":{\"subject\":\"tools\"}}' \
http://localhost:3570/index.php/trainingServer/screencast.json
Обычно параметр -d
интерпретируется как кодированный в форме. Вам понадобится параметр -H
:
curl -v -H "Content-Type: application/json" -X POST -d '{"screencast":{"subject":"tools"}}' \
http://localhost:3570/index.php/trainingServer/screencast.json