Python 在pd.merge时处理空值
我需要合并两个具有大量缺失值(np.nan、None和(null))的dfsPython 在pd.merge时处理空值,python,pandas,merge,null,Python,Pandas,Merge,Null,我需要合并两个具有大量缺失值(np.nan、None和(null))的dfs t1=pd.DataFrame(np.array([[1,2,3],[4,5,99]),columns=['a','b','c'])) t2=pd.DataFrame(np.array([[1,无,3,'hello'],[4,5,6,'moon']),列=['a','b','c','d'])) t=pd.merge(t1,t2,how='outer',on=[“a”,“c”]) 即,数据帧是: t1 = a
t1=pd.DataFrame(np.array([[1,2,3],[4,5,99]),columns=['a','b','c']))
t2=pd.DataFrame(np.array([[1,无,3,'hello'],[4,5,6,'moon']),列=['a','b','c','d']))
t=pd.merge(t1,t2,how='outer',on=[“a”,“c”])
即,数据帧是:
t1 =
a b c
0 1 2 3
1 4 5 99
t2 =
a b c d
0 1 None 3 hello
1 4 5 6 moon
我需要一个结果df,在不丢失任何数据的情况下,每个观察结果给我一行
相反,我得到一个新行,将“None”作为一个值
在上面的例子中,我想
t=pd.DataFrame(np.array([[1,2,3,'hello'],[4,5,99,'moon'],[4,5,6,'moon']),列=['a','b','c','d']))
也就是说,我想:
t =
a b c d
0 1 2 3 hello
1 4 5 99 moon
2 4 5 6 moon
对于您来说,这是一种特殊情况,但您可以尝试:
t= pd.merge(t1, t2[['a', 'd']].dropna(), how='left', on='a').append(t2.dropna())
合并函数将使用t1进行左连接,append将从t2中追加缺少的行,从t2中只将d列加入,dropna()将从None行中删除。您在这里找到的最好的帖子之一:谢谢@PV8这很有趣。不幸的是,这似乎对我的问题没有帮助。你能将你想要的结果添加为数据帧吗?@PV8 done,这有助于澄清吗?谢谢