【发布时间】:2017-04-10 21:51:29
【问题描述】:
首先让我这么说吧,我不确定这是否是最好的方法,但我编写了一些代码来创建一个 pandas 的数据帧,其中包含来自我左侧数据帧的索引值和来自我右侧数据帧的索引值特定空间条件匹配的地方。这是您的基本空间连接,但具有一些附加属性。索引值是正确的。
我的问题是,如何将左右数据帧与第三个数据帧连接在一起?
我需要支持以下内容:
- 如果我想保留所有(来自 df1 和 df2),我该怎么做?
- 默认情况下,我想保留所有左侧数据框的值,因此我的连接数据框的值如下:
[1, None]这会是个问题吗?
例子:
join_df = pd.DataFrame(data=[[0, 2], [1, 3], [2, None]], columns=['left_idx', 'right_idx'])
df1 = pd.DataFrame([["a", {5:5}], ["b", {4:5}], ["c", {12:5}]], columns=['A1', 'A2'])
df2 = pd.DataFrame([["b", {'a':5}], ["bbb", {'b':5}], ["ccc", {'c':5}]], columns=['B1', 'B2'])
所以 join_df 是这样工作的:
- join_df 中的数据是左侧数据帧 (df1) 的索引,要从 df2 连接的行在第 2 列中。
- 连接可以是多对多、1:m 或多对一。
目标是 df1 中的所有行都将与 df2 中的所有行匹配。可选地,(额外问题),如果 df1 到 df2 中不存在匹配项,是否可以保留 df1 的记录?和df2一样吗?
谢谢
【问题讨论】:
-
你能给出你希望输出数据帧的样子吗?您想要什么结果并不完全清楚。