你好,我怎样才能做,只有在2个数据帧val是不同的行。你知道吗
我需要的过滤方式如下:
对于F1的每一行(如果id1不为null,则取每个id1,搜索id1 F2),比较VAL,如果其不同,则返回它。否则看看id2,做同样的事情。你知道吗
请注意,我可以有id1或id2或两者,如下所示:
d2 = {'id1': ['X22', 'X13',np.nan,'X02','X14'],'id2': ['Y1','Y2','Y3','Y4',np.nan],'VAL1':[1,0,2,3,0]}
F1 = pd.DataFrame(data=d2)
d2 = {'id1': ['X02', 'X13',np.nan,'X22','X14'],'id2': ['Y4','Y2','Y3','Y1','Y22'],'VAL2':[1,0,4,3,1]}
F2 = pd.DataFrame(data=d2)
其中F1是:
id1 id2 VAL1
0 X22 Y1 1
1 X13 Y2 0
2 NaN Y3 2
3 X02 Y4 3
4 X14 NaN 0
F2是:
id1 id2 VAL2
0 X02 Y4 1
1 X13 Y2 0
2 NaN Y3 4
3 X22 Y1 3
4 X14 Y22 1
预期产量:
d2 = {'id1': ['X02',np.nan,'X22','X14'],'id2': ['Y4','Y3','Y1',np.nan],'VAL1':[3,2,1,0],'VAL2':[1,4,3,1]}
F3 = pd.DataFrame(data=d2)
id1 id2 VAL1 VAL2
0 X02 Y4 3 1
1 NaN Y3 2 4
2 X22 Y1 1 3
3 X14 NaN 0 1
好吧,这是一个相当复杂的合并,因为您要在两列上合并,并且其中任何一列都可以包含NaN,它应该匹配任何内容(但不能同时匹配两列)。你知道吗
我想两个单独的合并:
id1
在id1
的F1中不是NaNid1
是id2
上F1中的NaN在两个结果数据帧中,我只保留以下行:
那我就杀了他们。代码可以是:
结果是:
相关问题 更多 >
编程相关推荐