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()方法中提供这样一个函数。