【发布时间】:2015-07-02 18:02:35
【问题描述】:
好的,所以我有两个不同的数据框(df1 和 df2),为了简化,它们有一个 ID、一个日期和一个测试分数。在每个数据框中,人 (ID) 已在多个日期进行了测试。在两个数据框之间查看时,有些人在 df1 中列出但不在 df2 中,反之亦然,但有些人在两者中都列出,并且它们可以不同地重叠。
我想将所有数据合并到一个帧中,但棘手的部分是如果 df1 和 df2 中的任何 ID 和分数在 7 天内(我可以使用减去的日期列来做到这一点),我想合并那一行。
本质上,对于每个 ID,如果在 7 天内获得两个分数,则会有一行分别写出,如果不是,它将分成两行,一行来自 df1,一行来自 df2 以及所有其他分数可能不会在两者中列出。
前:
df1
ID Date1(yyyymmdd) Score1
1 20140512 50
1 20140501 30
1 20140703 50
1 20140805 20
3 20140522 70
3 20140530 10
df2
ID Date2(yyyymmdd) Score2
1 20140530 40
1 20140622 20
1 20140702 10
1 20140820 60
2 20140522 30
2 20140530 80
Wanted_df
ID Date1(yyyymmdd) Score1 Date2(yyyymmdd) Score2
1 20140512 50
1 20140501 30
1 20140703 50 20140702 10
1 20140805 20
1 20140530 40
1 20140622 20
1 20140820 60
3 20140522 70
3 20140530 10
2 20140522 30
2 20140530 80
【问题讨论】:
-
请显示小示例数据集和基于该示例的预期结果
-
正如您在这条线上看到的那样,测试是在 7 天内进行的,因此将其合并为一行,而其他的则没有,因此它们被分成不同的行。我希望这个例子有所帮助。
-
它的重现性仍然不高,但我认为它不值得投反对票
-
是否可以安全地假设每个 test1 最多有一个测试 2,反之亦然?或者有人可以在同一周内进行 2 个 test2,并且您希望每个 test1 的重复值......因为外部连接似乎不可能,我想知道是否有循环方法
-
@C8H10N4O2 是的,对于每个测试 1,最多有一个测试 2 可以与之匹配(人们最多每周参加一次测试,所以如果我这样做