применить лямбда-функцию к кадру данных dask

React-Router 4.0.0+ Answer

В 4.0 и выше используйте историю в качестве опоры вашего компонента.

class Example extends React.Component {
   // use `this.props.history.push('/some/path')` here
};

React-Router 3.0.0+ Answer

В версии 3.0 и выше используйте маршрутизатор в качестве опоры вашего компонента.

class Example extends React.Component {
   // use `this.props.router.push('/some/path')` here
};

React-Router 2.4.0+ Ответ

В 2.4 и выше используйте компонент более высокого порядка, чтобы получить маршрутизатор в качестве опоры вашего компонента.

import { withRouter } from 'react-router';

class Example extends React.Component {
   // use `this.props.router.push('/some/path')` here
};

// Export the decorated class
var DecoratedExample = withRouter(Example);

// PropTypes
Example.propTypes = {
  router: React.PropTypes.shape({
    push: React.PropTypes.func.isRequired
  }).isRequired
};

React-Router 2.0.0+ Answer

Эта версия обратно совместима с 1.x, поэтому нет необходимости в руководстве по обновлению.

При этом, если вы хотите переключиться на новый шаблон, внутри маршрутизатора есть браузерный модуль, к которому вы можете получить доступ с помощью

import { browserHistory } from 'react-router'

Теперь у вас есть доступ к истории вашего браузера, поэтому вы можете делать такие вещи, как push, replace и т. д. Например:

browserHistory.push('/some/path')

Дальнейшее чтение: Истории и Навигация


React-Router 1.xx Ответ

Я не буду вдаваться в подробности. Вы можете прочитать об этом в Руководстве по обновлению

. Основное изменение в вопросе здесь - это переход от навигационного микширования к истории. Теперь он использует историю браузераAPI для изменения маршрута, поэтому мы будем использовать pushState() с этого момента.

Вот пример использования Mixin:

var Example = React.createClass({
  mixins: [ History ],
  navigateToHelpPage () {
    this.history.pushState(null, `/help`);
  }
})

Обратите внимание, что этот History приходит из rackt / history проект. Не из React-Router.

Если вы не хотите использовать Mixin по какой-либо причине (возможно, из-за класса ES6), вы можете получить доступ к истории, которую вы получаете от маршрутизатора, с this.props.history , Он будет доступен только для компонентов, предоставляемых вашим маршрутизатором. Итак, если вы хотите использовать его в любых дочерних компонентах, его нужно передать в качестве атрибута через props.

Подробнее о новой версии вы можете прочитать в своей документации по 1.0.x

Вот справочная страница, в частности, о навигации вне вашего компонента

Он рекомендует захватить ссылку history = createHistory() и вызвать replaceState на это.

React-Router 0.13.x Ответ

Я попал в ту же проблему и мог найти решение с помощью навигационного микшина, который приходит с реакцией [30]

import React from 'react';
import {Navigation} from 'react-router';

let Authentication = React.createClass({
  mixins: [Navigation],

  handleClick(e) {
    e.preventDefault();

    this.transitionTo('/');
  },

  render(){
    return (
Click me!
); } });

Мне удалось вызвать transitionTo() без необходимости доступа к .context

. Или вы может попробовать фантастический ES6 class

import React from 'react';

export default class Authentication extends React.Component {
  constructor(props) {
    super(props);
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick(e) {
    e.preventDefault();

    this.context.router.transitionTo('/');
  }

  render(){
    return (
Click me!
); } } Authentication.contextTypes = { router: React.PropTypes.func.isRequired };

React-Router-Redux

Примечание: если вы используете Redux, есть еще один проект под названием React-Router-Redux , который дает вам привязки редукции для ReactRouter, используя тот же подход, что React-Redux делает

React -Router-Redux имеет несколько доступных методов, которые позволяют просто перемещаться из создателей действий. Они могут быть особенно полезны для людей, имеющих существующую архитектуру в React Native, и они хотят использовать те же шаблоны в React Web с минимальными служебными надбавками.

Исследуйте следующие методы:

  • push(location)
  • replace(location)
  • go(number)
  • goBack()
  • goForward()

Ниже приведен пример использования с помощью Redux-Thunk :

./ actioncreators.js

import { goBack } from 'react-router-redux'

export const onBackPress = () => (dispatch) => dispatch(goBack())

./ viewcomponent .js


1
задан Michael Schroter 2 March 2019 в 06:29
поделиться

1 ответ

Вы не выполняете одно и то же в случаях с пандами и дасками: для последнего у вас есть 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()
0
ответ дан mdurant 2 March 2019 в 06:29
поделиться
Другие вопросы по тегам:

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