【发布时间】:2019-03-13 06:38:12
【问题描述】:
我的问题与Merge pandas dataframe, with column operation 非常相似,但不能满足我的需求。
假设我有两个数据框,例如(请注意,数据框内容可以是浮点数而不是布尔值):
left = pd.DataFrame({0: [True, True, False], 0.5: [False, True, True]}, index=[12.5, 14, 15.5])
right = pd.DataFrame({0.7: [True, False, False], 0.5: [True, False, True]}, index=[12.5, 14, 15.5])
右
0.5 0.7
12.5 True True
14.0 False False
15.5 True False
左
0.0 0.5
12.5 True False
14.0 True True
15.5 False True
如您所见,它们具有相同的索引,并且其中一列是常见的。在现实生活中,可能会有更常见的列,例如 1.0 或其他尚未定义的数字,并且每一侧都有更多独特的列。 我需要组合两个数据框,以便保留所有唯一列,并使用特定函数组合公共列,例如此示例为布尔 OR,而两个数据帧的索引始终相同。
所以结果应该是:
结果
0.0 0.5 0.7
12.5 True True True
14.0 True True False
15.5 False True False
在现实生活中需要合并的数据帧不止两个,但可以一个接一个地依次合并成一个空的第一个数据帧。
我觉得 pandas.combine 可以解决问题,但我无法从文档中弄清楚。任何人都会对如何通过一个或多个步骤进行操作提出建议。
【问题讨论】:
-
我会分几步来做:推导出公共列,将组合函数应用于两者,然后添加非公共列。如果有两个以上,您将在第一个数据帧中就地应用这些步骤,同时循环其他数据帧。这听起来合乎逻辑吗?
标签: python pandas merge concat