Вы можете преобразовать каждый список в наборы, получить пересечение и преобразовать в bool:
L = [480, 9, 104]
mask = np.array([bool(set(map(int, x)) & set(L)) for x in df['split_categories']])
Или преобразовать list column
в DataFrame
, привести к плаванию и сравнить с isin
:
df1 = pd.DataFrame(df['split_categories'].values.tolist(), index=df.index)
mask = df1.astype(float).isin(L).any(axis=1)
<час> df = df[mask]
print (df)
album_id categories split_categories
0 66562 480.494 [480, 494]
3 1709 9 [9]
4 59239 105.104 [105, 104]
Я думаю, что Вам нужен фильтр на уровне web.xml:
<filter>
<filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
Только этот путь будет пружина смочь знать, когда Ваше представление будет представлено.
Можно попытаться использовать собственный компонент перехватчика от Spring, смотрят в моем
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="txAttributeSource"
class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource">
<property name="properties">
<props> <!-- this catches every method with the interceptor-->
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="txInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager">
<ref local="transactionManager" />
</property>
<property name="transactionAttributeSource">
<ref local="txAttributeSource" />
</property>
</bean>
<bean id="autoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="interceptorNames">
<list>
<idref local="txInterceptor" />
</list>
</property>
<property name="beanNames">
<list> <!--this proxies every bean with the especified pattern -->
<value>*BL</value>
</list>
</property>
</bean>
Чтобы ваш сеанс оставался открытым в течение всего запроса, вам нужно добавить Spring OpenSessionInViewFilter в ваш web.xml. Этот специфичен для hibernate3:
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
Проблема заключается в том, что вы используете диспетчер транзакций: это запустит новый сеанс, и, поскольку вы открыли его вручную, он также закроет его. Вам необходимо настроить управление транзакциями с помощью конфигурации Springs, чтобы все компоненты работали правильно вместе.
Используйте перехватчик транзакций на бизнес-уровне (TasqueService).