【发布时间】:2018-10-26 00:34:01
【问题描述】:
向我亲爱的 Python 爱好者们问好!
今天,当我在学习有关数据营的 Python 课程时,使用 pd.concat() 进行简单的数据连接真的让我印象深刻。我似乎无法理解加入背后的逻辑。我需要你的帮助!
考虑以下情况,这是一个简化版本,我们想使用 pd.concat() 来连接这两个表:
表 A:
Date Day status_country counts
1/5/2015 289 Cases_Guinea 2776.0
1/4/2015 288 Cases_Guinea 2775.0
1/3/2015 287 Cases_Guinea 2769.0
1/2/2015 286 Cases_Guinea NaN
12/31/2015 284 Cases_Guinea 2730.0
表 B:
status country
Cases Guinea
Cases Guinea
Cases Guinea
Cases Guinea
Cases Guinea
Python 代码:
pd.concat([ebola_melt, status_country], axis = 1)
返回数据:
Date Day status_country counts status country
1/5/2015 289 Cases_Guinea 2776.0 Cases Guinea
1/4/2015 288 Cases_Guinea 2775.0 Cases Guinea
1/3/2015 287 Cases_Guinea 2769.0 Cases Guinea
1/2/2015 286 Cases_Guinea NaN Cases Guinea
12/31/2015 284 Cases_Guinea 2730.0 Cases Guinea
问题:
显然,这两个表之间没有公共索引,除非您解析表 A 中的“status_country”列,然后将其与表 B 匹配,但我不确定这个函数是否足够聪明,可以做到这一点。
这个函数背后有什么样的匹配逻辑?
是做部分匹配还是先解析再匹配?
我怎么理解?
【问题讨论】:
-
它什么也没做,只是把你的表B添加到表A的右边,因为你指定了
axis=1 -
它是基于索引加入的,你没有包含在问题中。可能这两个
DataFrames有一个简单的RangeIndex(start=0, stop=len(df), step=1) -
@RockyLi 这解释了!这是一个简单的逐行连接,没有在列值中找到公共索引。最初,我认为 pd.concat() 算法可以识别 "Cases_Guinea" 与 ["Cases", "Guinea"] 之间的匹配项