Как отправить JSON на PHP с завихрением

Вы не выполняете одно и то же в случаях с пандами и дасками: для последнего у вас есть 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()
108
задан Peter Turner 1 May 2009 в 22:03
поделиться

4 ответа

Анализ Джордана о том, почему массив $ _POST не заполнен, является правильным. Однако вы можете использовать

$data = file_get_contents("php://input");

, чтобы просто получить тело http и обработать его самостоятельно. См. Потоки ввода / вывода PHP .

С точки зрения протокола это на самом деле более правильно, так как вы все равно на самом деле не обрабатываете данные составной формы http. Кроме того, используйте application / json как тип контента при публикации вашего запроса.

106
ответ дан 24 November 2019 в 03:29
поделиться

Я полагаю, что вы получаете пустой массив, потому что PHP ожидает, что опубликованные данные будут в формате строки запроса (ключ = значение и ключ1 = значение1).

Попробуйте изменить запрос curl на:

curl -i -X POST -d 'json={"screencast":{"subject":"tools"}}'  \
      http://localhost:3570/index.php/trainingServer/screencast.json

и посмотрите, поможет ли это кому-нибудь.

18
ответ дан 24 November 2019 в 03:29
поделиться

Вы должны избегать таких кавычек:

curl -i -X POST -d '{\"screencast\":{\"subject\":\"tools\"}}'  \
  http://localhost:3570/index.php/trainingServer/screencast.json
1
ответ дан 24 November 2019 в 03:29
поделиться

Обычно параметр -d интерпретируется как кодированный в форме. Вам понадобится параметр -H :

curl -v -H "Content-Type: application/json" -X POST -d '{"screencast":{"subject":"tools"}}' \
http://localhost:3570/index.php/trainingServer/screencast.json
120
ответ дан 24 November 2019 в 03:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: