Python Pandas-如何将两个数据帧(相同维度)的不相交内容合并到单个数据帧中
我有两个数据帧,它们的形状相同(索引和列名相同),而且都是稀疏填充的。两个数据帧中填充的单元格保证不相交,例如,如果df1中的单元格A1已填充,则df2中的对应单元格保证不相交。我想将这两个数据帧的内容合并成一个数据帧-有什么建议吗 以下是一个玩具示例: 给定这两个输入数据帧:Python Pandas-如何将两个数据帧(相同维度)的不相交内容合并到单个数据帧中,python,pandas,dataframe,merge,Python,Pandas,Dataframe,Merge,我有两个数据帧,它们的形状相同(索引和列名相同),而且都是稀疏填充的。两个数据帧中填充的单元格保证不相交,例如,如果df1中的单元格A1已填充,则df2中的对应单元格保证不相交。我想将这两个数据帧的内容合并成一个数据帧-有什么建议吗 以下是一个玩具示例: 给定这两个输入数据帧: df1 = pd.DataFrame(index = [0,1,2,3]) df2 = pd.DataFrame(index = [0,1,2,3]) df1['Fruit'] = ['Apple','','Orang
df1 = pd.DataFrame(index = [0,1,2,3])
df2 = pd.DataFrame(index = [0,1,2,3])
df1['Fruit'] = ['Apple','','Orange','']
df1['Veg'] = ['Onion','','','Carrot']
df2['Fruit'] = ['','Banana','','']
df2['Veg'] = ['','Parsnip','','']
我想输出:
df3 = pd.DataFrame(index = [0,1,2,3])
df3['Fruit'] = ['Apple','Banana','Orange','']
df3['Veg'] = ['Onion','Parsnip','','Carrot']
数据帧看起来像:
df1:
df2:
df3:
您可以使用
all
条件执行concat
和dropna
:
df=pd.concat([df1,df2],axis=0).replace('',np.NaN).dropna(how='all').sort_index().fillna('')
df
Out[21]:
Fruit Veg
0 Apple Onion
1 Banana Parsnip
2 Orange
3 Carrot
Fruit Veg
0
1 Banana Parsnip
2
3
Fruit Veg
0 Apple Onion
1 Banana Parsnip
2 Orange
3 Carrot
df=pd.concat([df1,df2],axis=0).replace('',np.NaN).dropna(how='all').sort_index().fillna('')
df
Out[21]:
Fruit Veg
0 Apple Onion
1 Banana Parsnip
2 Orange
3 Carrot