我尝试执行一个“ excel v lookup
”以基于一个值合并2个df。如果第一个值位于第二个值中,则进行合并(请参见下面的ex)。我在这里尝试了很多选择,但没有人能解决。我尝试将日期放在WO_ID
列中的相应数字上,并保留此列中的所有数字。
我知道如何转换日期中的字符串,但是我让*和A也许可以编写完整的代码。
所以:
Data Frame 1: cms
WO_ID Status
14163-2018 1
14142-2018 1
2092-2019 2
2093-2019 2
11922-2019 1
Data Frame 2: df
WO Start Finish
2092-2019; 2093-2019 12-07-19* 18-07-19
11922-2019 02-07-2019A 28-07-19*
14142-2018; 14163-2018 06-07-19 28-07-19*
除了尝试了许多其他代码外,我认为这更接近结果……但显然不起作用。
我尝试创建一个包含合并的cms + db的第3个数据库(我们称之为“全部”)
这是代码:
all = pd.merge(cms,df,left_on='WO_ID',right_on='WO',how='left',indicator=True)
这显然是不完整的:
WO_ID Statu WO Start Finish _merge
14163-2018 1 NaN NaT NaT left_only
14142-2018 1 NaN NaT NaT left_only
2092-2019 2 NaN NaT NaT left_only
2093-2019 2 NaN NaT NaT left_only
11922-2019 1 11922-2019 02-07-2019A 28-07-19* both
我尝试获得这样的输出:
WO_ID Status WO Start Finish _merge
14163-2018 1 14142-2018; 14163-2018 06-07-19 28-07-19* whatever..
14142-2018 1 14142-2018; 14163-2018 06-07-19 28-07-19* whatever..
2092-2019 2 2092-2019; 2093-2019 12-07-19* 18-07-19 whatever..
2093-2019 2 2092-2019; 2093-2019 12-07-19* 18-07-19 whatever..
11922-2019 1 11922-2019 02-07-2019A 28-07-19* both
但是我不知道如何。
请支持。 :)
谢谢。
答案 0 :(得分:0)
数据框1:厘米
数据框2:df
公式和结果
预期结果
答案 1 :(得分:0)
合并不起作用的原因是,在两个数据框中您的密钥都不相同。您可以做的一种方法是为第二个数据帧df创建一个新密钥。您可以使用以下解决方案https://stackoverflow.com/a/39946744/8329101
df['key'] = df['WO']
df_exploded = tidy_split(df, 'key', sep=';')
然后应用加入操作
all = pd.merge(cms,df_exploded ,left_on='WO_ID',right_on='key',how='left')