Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在pd.merge时处理空值_Python_Pandas_Merge_Null - Fatal编程技术网

Python 在pd.merge时处理空值

Python 在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

我需要合并两个具有大量缺失值(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   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,这有助于澄清吗?谢谢