Python 数据帧的合并与填充

Python 数据帧的合并与填充,python,python-2.7,pandas,merge,dataframe,Python,Python 2.7,Pandas,Merge,Dataframe,我有两个熊猫数据帧。这些列的名称相同,并且具有相同的维度,但它们的值不同(并且缺少) 我希望基于一个键列进行合并,并获取每个等效行的最大或非缺失数据 import pandas as pd import numpy as np df1 = pd.DataFrame({'key':[1,3,5,7], 'a':[np.NaN, 0, 5, 1], 'b':[datetime.datetime.today() - datetime.timedelta(days=x) for x in range(

我有两个熊猫数据帧。这些列的名称相同,并且具有相同的维度,但它们的值不同(并且缺少)

我希望基于一个键列进行合并,并获取每个等效行的最大或非缺失数据

import pandas as pd
import numpy as np

df1 = pd.DataFrame({'key':[1,3,5,7], 'a':[np.NaN, 0, 5, 1], 'b':[datetime.datetime.today() - datetime.timedelta(days=x) for x in range(0,4)]})
df1
    a                          b  key
0 NaN 2014-08-01 10:37:23.828683    1
1   0 2014-07-31 10:37:23.828726    3
2   5 2014-07-30 10:37:23.828736    5
3   1 2014-07-29 10:37:23.828744    7

df2 = pd.DataFrame({'key':[1,3,5,7], 'a':[2, 0, np.NaN, 3], 'b':[datetime.datetime.today() - datetime.timedelta(days=x) for x in range(2,6)]})
df2.ix[2,'b']=np.NaN
df2
    a                          b  key
0   2 2014-07-30 10:38:13.857203    1
1   0 2014-07-29 10:38:13.857253    3
2 NaN                        NaT    5
3   3 2014-07-27 10:38:13.857272    7
最终结果如下所示:

df_together
    a                          b  key
0   2 2014-07-30 10:38:13.857203    1
1   0 2014-07-29 10:38:13.857253    3
2   5 2014-07-30 10:37:23.828736    5
3   3 2014-07-27 10:38:13.857272    7

我希望我的例子涵盖所有情况。如果两个数据帧都有NaN(或NaT)值,则结果也应该有NaN(或NaT)值。尽管我可能会尝试,但我无法让pd.merge函数提供我想要的功能。

通常,在这些情况下最容易做到:

df_together = pd.concat([df1, df2]).groupby('key').max()

谢谢那太完美了。