Python 组合两列的值,其中';外部'';合并'-应用了一种新方法

Python 组合两列的值,其中';外部'';合并'-应用了一种新方法,python,pandas,dataframe,merge,Python,Pandas,Dataframe,Merge,我正在尝试对两列执行pd.merge和outer方式。但我需要输出数据帧使两列实际合并在一起,这样就没有Nan值 我举个例子。假设以下数据帧将在时间戳列上合并: a1=['2019-09-01 00:00:00', '2019-09-01 01:00:00', '2019-09-01 03:00:00', '2019-09-10 01:00:00'] a2=['a','c_1','d','f_1'] b1=['2019-09-01 00:10:00', '2019-09-01 01:00:00'

我正在尝试对两列执行
pd.merge
outer
方式。但我需要输出数据帧使两列实际合并在一起,这样就没有Nan值

我举个例子。假设以下数据帧将在时间戳列上合并:

a1=['2019-09-01 00:00:00', '2019-09-01 01:00:00', '2019-09-01 03:00:00', '2019-09-10 01:00:00']
a2=['a','c_1','d','f_1']
b1=['2019-09-01 00:10:00', '2019-09-01 01:00:00', '2019-09-01 03:07:00', '2019-09-10 01:00:00']
b2=['b','c_2', 'e', 'f_2']
A=pd.DataFrame({'a1':a1, 'a2':a2})
A.a1=pd.to_datetime(A.a1)
B=pd.DataFrame({'b1':b1, 'b2':b2})
B.b1=pd.to_datetime(B.b1)
我希望得到的合并数据帧接近于此:

merged=pd.merge(A,B, left_on='a1', right_on='b1', how='outer', sort=True)
print(merged)
>>>
                   a1   a2                  b1   b2
0 2019-09-01 00:00:00    a                 NaT  NaN
1                 NaT  NaN 2019-09-01 00:10:00    b
2 2019-09-01 01:00:00  c_1 2019-09-01 01:00:00  c_2
3 2019-09-01 03:00:00    d                 NaT  NaN
4                 NaT  NaN 2019-09-01 03:07:00    e
5 2019-09-10 01:00:00  f_1 2019-09-10 01:00:00  f_2
除了所需的输出应合并“a1”和“b1”。它应该是这样的:

             datetime   a2    b2  #datetime column has 'a1' and 'b1' merged
0 2019-09-01 00:00:00    a   NaN
1 2019-09-01 00:10:00  NaN     b
2 2019-09-01 01:00:00  c_1   c_2
3 2019-09-01 03:00:00    d   NaN
4 2019-09-01 03:07:00  NaN     e
5 2019-09-10 01:00:00  f_1   f_2
有什么想法我可以用pythonic/pandaic的方式来表演吗


提前感谢:-)

您可以在合并后先使用pandas的
合并功能:

merged['datetime'] = merged['a1'].combine_first(merged['b1'])

它将取
a1
的值,如果这是
na
,那么
b1

的值就起作用了。它在数据帧的末尾创建了所需的列作为一个额外的列,因此我想我应该删除'a1'和'b1'列。很高兴学习
pandas.combine_first()
方法,但我认为pandas可以在
pandas.merge()方法中提供这样一个函数。