df = pd.DataFrame({'Year': ['2014', '2015'], 'quarter': ['q1', 'q2']}) df['period'] = df[['Year', 'quarter']].apply(lambda x: ''.join(x), axis=1)
Устанавливает этот фрейм данных
Year quarter period 0 2014 q1 2014q1 1 2015 q2 2015q2
Этот метод обобщает на произвольное количество столбцов строки, заменив
df[['Year', 'quarter']]
на любой фрагмент столбца вашего фрейма данных, например.df.iloc[:,0:2].apply(lambda x: ''.join(x), axis=1)
.Вы можете проверить дополнительную информацию о методе apply () здесь
Если вы не хотите использовать конкатенацию строк (, предложенную Sotirios ), вы можете использовать предварительную обработку выражения в ссылке URL :
<form th:action="@{/mycontroller/__${type}__}">
Exception evaluating SpringEL expression: "businessId" (login:50)
У меня такая же проблема и решайте с помощью конкатенации строк, как показано ниже.
LoginController.java
@RequestMapping(value = "/login/{businessId}", method = RequestMethod.GET)
public ModelAndView get(HttpServletRequest request, @PathVariable String businessId) {
ModelAndView modelAndView = new ModelAndView("login");
modelAndView.addObject("businessId", businessId);
return modelAndView;
}
login .html
<form role="form" th:action="@{/login} + '/'+ ${businessId}" th:method="post">
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="E-mail" name="userName"
type="email"></input>
</div>
<div class="form-group">
<input class="form-control" placeholder="Password"
name="password" type="password" value=""></input>
</div>
<div class="checkbox">
<label> <input name="remember" type="checkbox"
value="Remember Me"></input>Remember Me
</label>
</div>
<!-- Change this to a button or input when using this as a form -->
<button id="login" class="btn btn-lg btn-success btn-block" type="submit">Login</button>
</fieldset>
</form>
Вам нужна строка конкатенации внутри @ {}.
<form th:action="@{'/mycontroller/' + ${type}}">
@ {} используется для перезаписи URL. Часть перезаписи URL-адресов отслеживает сеанс. Первый URL-адрес пользовательского запроса, сервер приложений добавляет URL ;jsessionid=somehexvalue
и генерирует cookie с jsessionid. Когда клиент отправляет cookie во время следующего сервера запросов, клиент поддерживает файлы cookie. Если сервер знает, что поддерживает куки-файлы поддержки клиента, сервер не будет содержать addind jsessionid в URL.
Мой предпочтительный путь - это буквальная подстановка синтаксисом конвейера (|).
<form th:action="@{|/mycontroller/${type}|}">
Thymeleaf path переменный синтаксис -
<form th:action="@{/mycontroller/{pathParam}(pathParam=${type}}">
Что вам нужно:
<a th:href="@{/mycontroller/{type}(type=${type})}">
Документация:
Большая помощь здесь: http://www.thymeleaf.org/doc/articles/ standardurlsyntax.html . То, что я использовал оттуда, было:
Вы также можете включить параметры в виде переменных пути, аналогично обычным параметрам, но указав местозаполнитель внутри пути вашего URL:
<a th:href="@{/order/{id}/details(id=3,action='show_all')}">
... Более того: выражение URL:
blockquote>
<a th:href="@{/order/details(id=${order.id})}">