我想加入两个数据帧info
和store
。 Info
包含大约一百万行,并使用信息数据框的Store
列中表示的ID来显示当天某商店不同日期的销售信息,共有1115个不同的商店。 store
数据框包含有关该商店及其某些功能的信息,store
数据框还包含商店ID列为Store
。我想加入两个数据框,以便新数据框包含数据,销售以及来自store
数据框的有关商店的信息的所有功能。
我尝试了.join
,.merge
方法,但这些方法在第1115行之前都可以正常工作,但之后却给出了空值。
Info
数据框
Store DayOfWeek Date Sales Customers Open Promo StateHoliday SchoolHoliday
----- --------- ---------- ----- --------- ---- ----- ------------ -------------
0 1 5 2015-07-31 5263 555 1 1 0 1
1 2 5 2015-07-31 6064 625 1 1 0 1
2 3 5 2015-07-31 8314 821 1 1 0 1
3 4 5 2015-07-31 13995 1498 1 1 0 1
4 5 5 2015-07-31 4822 559 1 1 0 1
store
数据框
Store StoreType Assortment CompetitionDistance CompetitionOpenSinceMonth CompetitionOpenSinceYear Promo2 Promo2SinceWeek Promo2SinceYear PromoInterval
----- --------- ---------- ------------------- ------------------------- ------------------------ ------ --------------- --------------- ---------------
0 1 c a 1270 9 2008 0 NaN NaN NaN
1 2 a a 570 11 2007 1 13 2010 Jan,Apr,Jul,Oct
2 3 a a 14130 12 2006 1 14 2011 Jan,Apr,Jul,Oct
3 4 c c 620 9 2009 0 NaN NaN NaN
4 5 a a 29910 4 2015 0 NaN NaN NaN
答案 0 :(得分:0)
您可以使用left_join
或dplyr
软件包中的tidyverse
函数。
根据您的数据,您可以使用:
joinedDf = left_join(Info, store, by = c("Store" = "Store")
。
请注意,我在连接的数据框中还遇到了特殊的NA值,这是我目前无法解释的事情。但是,如果您确定这些NA行无用,只需使用joinedDf = joinedDf[complete.cases(joinedDf), ]
删除带有NA的行。
答案 1 :(得分:0)
您确实想执行联接,但是听起来好像您没有指定要联接的列。
样本数据:
info
Year Week Store Sales
0 2018 1 1 1011
1 2018 2 1 1021
2 2018 1 2 1012
3 2018 2 2 1022
store
Store StoreName StoreCity
0 1 store1 city1
1 2 store2 city2
.join
的默认设置是加入数据框的索引,因此
joined = info.join(store, lsuffix='_from_info')
生成一个DataFrame,其中仅前两行“匹配”(索引0和1)
Year Week Store_from_info Sales Store StoreName StoreCity
0 2018 1 1 1011 1.0 store1 city1
1 2018 2 1 1021 2.0 store2 city2
2 2018 1 2 1012 NaN NaN NaN
3 2018 2 2 1022 NaN NaN NaN
请注意,结果的第二行(索引1)已将store1的info
数据(Store_from_info
为1)与store2的store
数据连接在一起。那不是你想要的。
相反,您想加入每个DataFrame中的Store
列。可以这样
joined = info.join(store.set_index('Store'), on='Store')
生产
Year Week Store Sales StoreName StoreCity
0 2018 1 1 1011 store1 city1
1 2018 2 1 1021 store1 city1
2 2018 1 2 1012 store2 city2
3 2018 2 2 1022 store2 city2
有关详情,请参见熊猫.join documentation。