1
不知道该如何描述该问题,因此我将使用下面的示例。 我想加入以下两个表df1和df2,以获得类似df3的表,其中每个时间都需要存在所有ID,A,B,C,D。pandas:即使没有匹配,连接两个表并填充值
d1 = {'Time': [1,1,2,2], 'BinID': ['x']*4, 'V1': [25, 30, 22, 28], 'ID': ['A','B']*2}
df1 = pd.DataFrame(d1)
BinID ID Time V1
0 x A 1 25
1 x B 1 30
2 x A 2 22
3 x B 2 28
d2 = {'BinID': ['x']*4, 'ID': ['A','B','C','D'], 'V2': [26]*4}
df2= pd.DataFrame(d2)
BinID ID V2
0 x A 26
1 x B 26
2 x C 26
3 x D 26
我想是这样的:
BinID_x ID V2 BinID_y Time V1
0 x A 26 x 1 25
1 x B 26 x 1 30
2 x C 26 x 1 NaN
3 x D 26 x 1 NaN
4 x A 26 x 2 22
5 x B 26 x 2 28
6 x C 26 x 2 NaN
7 x D 26 x 2 NaN
但左连接只是让我这个......
pd.merge(df2, df1, on = 'ID', how = 'left')
BinID_x ID V2 BinID_y Time V1
0 x A 26 x 1 25
1 x A 26 x 2 22
2 x B 26 x 1 30
3 x B 26 x 2 28
4 x C 26 NaN NaN NaN
5 x D 26 NaN NaN NaN
你的合并没有任何意义,你在df1中拥有A和B的ID,但是在df2中它有C和D,所以你会得到NaN值,就像你找到的那样。否则,这里没有真正的关系,因为其他列的值相同。 – EdChum
我简化了场景。因此,df2充当参考表,并且我需要为每个时间填充所有ID,以便当df1中的另一列(不在本例中,表示为realdata)缺少填充表df2中的某些内容时(在本例中不是proxydata)。我需要每次都这样做。后面的计算需要按所有ID的时间计算。希望它不那么令人困惑:)。 –
不是真的,你需要更新你的例子来展示你的真实问题 – EdChum