【发布时间】:2020-03-28 05:45:24
【问题描述】:
请原谅标题 - 我不确定如何最好地描述我的问题。我相信我所追求的可能是有条件的外部联接/合并。我在想要么在开始时设置条件,要么合并所有内容,然后删除非必要信息。我确实有一个例子,希望能帮助解释我的情况。
我从以下数据框开始:
数据框 1
+--------+------------+
| GlobID | Issue |
+--------+------------+
| 1 | Building M |
+--------+------------+
| 2 | Building V |
+--------+------------+
| 3 | Building H |
+--------+------------+
数据框 2
+----+---------+---------+------------+---------+---------+------------+
| ID | Issue_A | Note_A | Location_A | Issue_B | Note_B | Location_B |
+----+---------+---------+------------+---------+---------+------------+
| 1 | Y | broken | bathroom | N | | |
+----+---------+---------+------------+---------+---------+------------+
| 2 | Y | stained | bedroom | Y | rusty | basement |
+----+---------+---------+------------+---------+---------+------------+
| 3 | Y | missing | kitchen | Y | cracked | attic |
+----+---------+---------+------------+---------+---------+------------+
- 在数据框 2 中,'Note_A' 和 'Location_A' 的值取决于 'Issue_A' 如果有问题,那么这些将被填充。如果不是,“Issue_A”标记为“N”,其他列保持为空。基本上,我想要的是整合数据,以便对于每个 ID,将问题分解为它们自己的行。理想情况下,结果不包括未记录问题的记录:
期望的结果:
+--------+------------+---------+----------+
| GlobID | Name | Issue | Location |
+--------+------------+---------+----------+
| 1 | Building M | broken | bathroom |
+--------+------------+---------+----------+
| 2 | Building V | stained | bedroom |
+--------+------------+---------+----------+
| 2 | Building V | rusty | basement |
+--------+------------+---------+----------+
| 3 | Building H | missing | kitchen |
+--------+------------+---------+----------+
| 3 | Building H | cracked | attic |
+--------+------------+---------+----------+
正如我所提到的,我不确定外部联接是否是我想要在这里与 ffill 一起填写 ID 的?任何帮助将不胜感激。
编辑:
忘了说,这是我目前的代码:
pd.merge(df1, df2.set_index('ID'), left_on='GlobID', right_index=True)
这真的只能让我将 df1 加入到 df2。我仍然需要打破这些问题,以便它们各自占据自己的行列。
【问题讨论】: