如何在pandas中按行交错合并两个列名一致的dataframe
Pandas两个DataFrame按行交错拼接实现方法
以下两种实现均基于两表列名完全一致的前提:
方法1:索引排序法(通用,支持行数不一致场景)
该方案兼容性最强,若两表行数不同,行数更多的表多出的行将自动追加到结果末尾:
import pandas as pd # 示例数据构造 df1 = pd.DataFrame({'col1': [1,3,5], 'col2': ['a','c','e']}) df2 = pd.DataFrame({'col1': [2,4,6], 'col2': ['b','d','f']}) # 分别给两表设置奇偶间隔的索引 df1_with_idx = df1.set_index(pd.RangeIndex(0, 2*len(df1), 2)) df2_with_idx = df2.set_index(pd.RangeIndex(1, 2*len(df2), 2)) # 拼接后按索引排序,重置索引得到最终结果 df3 = pd.concat([df1_with_idx, df2_with_idx]).sort_index().reset_index(drop=True)
方法2:Numpy矩阵重排法(高效,仅支持行数完全一致场景)
如果确认两个DataFrame行数完全相同,用该方法运算效率更高:
import pandas as pd import numpy as np df1 = pd.DataFrame({'col1': [1,3,5], 'col2': ['a','c','e']}) df2 = pd.DataFrame({'col1': [2,4,6], 'col2': ['b','d','f']}) # 垂直堆叠后按列优先重排,转换为DataFrame df3 = pd.DataFrame( np.vstack([df1.values, df2.values]).reshape(-1, df1.shape[1], order='F'), columns=df1.columns )
两种方法最终得到的df3均符合要求的交错排列规则:第1行来自df1第1行、第2行来自df2第1行,以此类推。
内容的提问来源于stack exchange,提问作者Tanmay Dwivedi
相关产品推荐
相关产品推荐

