我正在尝试跟踪一组交货的移动历史。我有两个数据框-第一个是历史记录开始之前每个交付物品的最后一个已知位置:
java.lang.IllegalStateException: Could not evaluate condition on org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration$EndpointWebMvcConfiguration due to org/springframework/web/servlet/config/annotation/AsyncSupportConfigurer not found. Make sure your own configuration does not rely on that class. This can also happen if you are @ComponentScanning a springframework package (e.g. if you put a @ComponentScan in the default package by mistake)
at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:55) ~[spring-boot-autoconfigure-1.5.14.RELEASE.jar:1.5.14.RELEASE]
at org.springframework.context.annotation.ConditionEvaluator.shouldSkip(ConditionEvaluator.java:102) ~[spring-context-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader$TrackedConditionEvaluator.shouldSkip(ConfigurationClassBeanDefinitionReader.java:444) ~[spring-context-4.3.18.RELEASE.jar:4.3.18.RELEASE]
etc...
at com.dish.wfm.controller.SamsungUpdateJobApplication.main(SamsungUpdateJobApplication.java:17) [classes/:na]
Caused by: java.lang.NoClassDefFoundError: org/springframework/web/servlet/config/annotation/AsyncSupportConfigurer
at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_211]
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_211]
at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_211]
etc...
Caused by: java.lang.ClassNotFoundException: org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer
at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_211]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_211]
... 36 common frames omitted
org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$EnableWebMvcConfiguration] for bean with name 'org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$EnableWebMvcConfiguration': problem with class file or dependent class; nested exception is java.lang.VerifyError: class org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$EnableWebMvcConfiguration overrides final method configureHandlerExceptionResolvers.(Ljava/util/List;)V
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1394) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:641) ~[spring-beans-4.3.18.RELEASE.jar:4.3.18.RELEASE]
etc...
Caused by: java.lang.VerifyError: class org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$EnableWebMvcConfiguration overrides final method configureHandlerExceptionResolvers.(Ljava/util/List;)V
at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_211]
at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[na:1.8.0_211]
etc...
接下来是交货历史记录:
prior_location = pd.DataFrame([
{'Equip': 'A-1', 'Date': '2019-07-15', 'Location': '123 Main St.'},
{'Equip': 'A-2', 'Date': '2019-07-17', 'Location': '15 First Ave.'}
])
我的目标是为每次交付生成一个带有deliveries = pd.DataFrame([
{'Equip': 'A-1', 'Date': '2019-08-01', 'DeliveredTo': '191 Long Rd.'},
{'Equip': 'A-1', 'Date': '2019-08-03', 'DeliveredTo': '582 Pleasant Court'},
{'Equip': 'A-1', 'Date': '2019-08-04', 'DeliveredTo': 'SHOP'},
{'Equip': 'A-2', 'Date': '2019-07-30', 'DeliveredTo': 'YARD'},
{'Equip': 'A-2', 'Date': '2019-08-01', 'DeliveredTo': '191 Long Rd.'},
{'Equip': 'A-2', 'Date': '2019-08-05', 'DeliveredTo': '15 Lake Drive'}
])
和PickedUpFrom
列的数据框。例如-最终数据框应类似于:
DeliveredTo
请注意,每台设备的第一个条目history = pd.DataFrame([
{'Equip': 'A-1', 'Date': '2019-08-01', 'PickedUpFrom': '123 Main St.', 'DeliveredTo': '191 Long Rd.'},
{'Equip': 'A-1', 'Date': '2019-08-03', 'PickedUpFrom': '191 Long Rd.', 'DeliveredTo': '582 Pleasant Court'},
{'Equip': 'A-1', 'Date': '2019-08-04', 'PickedUpFrom': '582 Pleasant Court', 'DeliveredTo': 'SHOP'},
{'Equip': 'A-2', 'Date': '2019-07-30', 'PickedUpFrom': '123 Main St.', 'DeliveredTo': 'YARD'},
{'Equip': 'A-2', 'Date': '2019-08-03', 'PickedUpFrom': 'YARD', 'DeliveredTo': '191 Long Rd.'},
{'Equip': 'A-2', 'Date': '2019-08-04', 'PickedUpFrom': '15 First Ave.', 'DeliveredTo': '15 Lake Drive'},
])
来自PickedUpFrom
表,随后的是上一行(对于该设备)prior_location
。 / p>
任何想办法做到这一点的方法(我的实际数据集有数千台设备)。
有两件事要注意-每个日期每台设备只有一次交货(因此DeliveredTo
在给定日期仅在一个位置)。另外,保证A-1
数据帧的位置在交货数据帧的第一个元素之前。
答案 0 :(得分:1)
这里是首先groupby
+ shift
,然后是fillna
和prior_location
的一种方式
deliveries['PickedUpFrom']=deliveries.groupby('Equip').DeliveredTo.shift()
s=prior_location.set_index('Equip')['Location'].reindex(deliveries.Equip).values
deliveries['PickedUpFrom'].fillna(pd.Series(s,index=deliveries.index),inplace=True)
deliveries
Out[51]:
Equip Date DeliveredTo PickedUpFrom
0 A-1 2019-08-01 191 Long Rd. 123 Main St.
1 A-1 2019-08-03 582 Pleasant Court 191 Long Rd.
2 A-1 2019-08-04 SHOP 582 Pleasant Court
3 A-2 2019-07-30 YARD 15 First Ave.
4 A-2 2019-08-01 191 Long Rd. YARD
5 A-2 2019-08-05 15 Lake Drive 191 Long Rd.