使用Pandas concat合并DataFrame出现空单元格,如何实现数据追加到指定列下方?
问题分析
你当前的代码用pd.concat合并header和detail时,因两个DataFrame的列名完全不同,concat会按列名对齐,导致detail的数据被放到col_4-col_6列,而非追加到col_1-col_3的下方。
解决方案
要实现预期效果,需将detail的列名替换为header的列名,让concat时能将数据对齐到col_1-col_3列后再合并。
修改后的代码如下:
import pandas as pd data = pd.read_excel('test.xlsx') header = data[['col_1', 'col_2', 'col_3']] # 将detail的列重命名为header的列名 detail = data[['col_4', 'col_5', 'col_6']].rename(columns={'col_4':'col_1', 'col_5':'col_2', 'col_6':'col_3'}) # 合并两个DataFrame并重置索引 combined = pd.concat([header, detail], ignore_index=True) # 保存为CSV,保留列名且不输出索引 combined.to_csv('output.csv', index=False)
效果说明
修改后,detail中的ddddd、eeeee、ffffff会被放到col_1、col_2、col_3的第二行,col_4-col_6列全部为空,完全匹配你预期的输出格式:
| col_1 | col_2 | col_3 | col_4 | col_5 | col_6 |
|---|---|---|---|---|---|
| aaaaa | bbbbb | ccccc | |||
| ddddd | eeeee | fffff |
内容的提问来源于stack exchange,提问作者bradsdb
相关产品推荐
相关产品推荐

