我有两个数据框df1和df2,每个数据框包含不同的信息和不同的长度,但是共有一个“ DAY”列,尽管并不总是具有相同的值。就上下文而言,一个数据框包含降水记录,另一个数据框包含洪水事件及其大小的记录。我想将它们结合起来,以便我可以轻松比较与洪水事件有关的降水条件。 df1(降水)如下所示:
D M Y DAY Tpcp MaxInt
30 9 2010 5553 20.8 2.2
1 10 2010 5554 14 1.8
2 10 2010 5555 61.8 1.8
3 10 2010 5556 30 1.2
4 10 2010 5557 68.4 1
5 10 2010 5558 10.2 1
6 10 2010 5559 82.8 2.2
7 10 2010 5560 54.6 2.2
10 10 2010 5563 11.4 1.8
df2(洪水)看起来像这样:
D M Y DAY Size
12 5 2009 5047 2
3 9 2009 5161 2
13 4 2010 5383 3
14 4 2010 5384 3
16 7 2010 5477 2
4 10 2010 5557 3
6 10 2010 5559 3
30 4 2011 5765 2
22 5 2011 5787 2
27 5 2011 5792 2
9 11 2011 5958 2
降雨不会全天都在发生,所以我的目标是这样的,零事件发生时为零:
D M Y DAY Tpcp MaxInt FldSz
30 9 2010 5553 20.8 2.2 0
1 10 2010 5554 14 1.8 0
2 10 2010 5555 61.8 1.8 0
3 10 2010 5556 30 1.2 0
4 10 2010 5557 68.4 1 3
5 10 2010 5558 10.2 1 3
6 10 2010 5559 82.8 2.2 0
7 10 2010 5560 54.6 2.2 0
10 10 2010 5563 11.4 1.8 0
再次,我认为最简单的方法是根据“ DAY”进行合并/合并。也许这是一个非常明显的任务,如果可以的话,我很抱歉(我是新来的),但是我找不到我认为适合该问题的答案,并且想知道那里是否会有一些建议……在此先感谢您思想和贡献:)
答案 0 :(得分:1)
答案 1 :(得分:1)
您正确使用merge
,但是您希望在执行合并时设置how="outer"
。
df3 = df1.merge(df2[["DAY", "Size"]], how="left")
设置how="left"
将返回最左侧表(在这种情况下为df1
)中的所有行,即使df2
中没有匹配的记录。对于没有匹配记录的记录,NaN
将填充df2
中没有记录的df1
列。
答案 2 :(得分:0)
您可以尝试:
[(UINavigationController *)self.view.window.rootViewController popViewControllerAnimated:YES];
答案 3 :(得分:0)
看看这是否能解决您的意思:
df = df1.merge(df2, on=['D', 'M', 'Y', 'DAY'], how='left')
df['FldSz'] = df['Size'].fillna(0)