Python如何合并无公共列的pandas DataFrame实现列对齐
你遇到的问题是pd.concat纵向合并时默认按列名匹配对齐,两个待合并DataFrame的列命名不一致,才会生成多余列、填充空值。你只需要先将第二个DataFrame的列名修改为和第一个一致,再合并即可。
修改后的完整代码如下:
import pandas as pd FileFolder = r'(JAN-MAY 2021).xlsx' BookingDF = pd.read_excel(FileFolder,skiprows=9) # 原代码此行未赋值,如果你需要删除索引为1的行,补充赋值即可 BookingDF = BookingDF.iloc[pd.RangeIndex(len(BookingDF)).drop(1)] VanDF = pd.read_excel(FileFolder,sheet_name='JANUARY VANSALES') # 提取对应列 BookingHeader = BookingDF[['ID#','Name','w/bottles']] VanHeader = VanDF[['Customer ID','Customer','W/BOTTLES']] # 关键步骤:将VanHeader的列名重命名为和BookingHeader完全一致 VanHeader.columns = ['ID#', 'Name', 'w/bottles'] # 合并两个结构一致的DataFrame CG_DF = [BookingHeader,VanHeader] CG = pd.concat(CG_DF, axis=0, ignore_index=True) print(CG)
运行后即可得到你预期的仅3列、无多余空值、数据对齐的合并结果。
内容的提问来源于stack exchange,提问作者Trunks
相关产品推荐
相关产品推荐

