拼接DataFrame后列数翻倍、索引不递增,如何解决?
问题解决思路及修正代码
问题根源
- 列数翻倍+NaN:你调用了
df2.reset_index(),这会给df2额外新增一列index,而原df_没有这列;加上DF1有331、332列,DF2缺失这些列,concat时会合并所有列,缺失值自动补NaN,导致列数异常增多。 - 索引未递增:默认
pd.concat会保留原DataFrame的索引,两个输入DF的行索引都是0,所以结果里索引重复,没有自动生成连续索引。
修正后的代码
# 直接拼接原始DF,设置ignore_index=True重置索引 result = pd.concat([df_, df2], axis=0, ignore_index=True) # 如果需要给DF2缺失的列(331、332)填充默认值(比如0),可以再加一步 result = result.fillna(0)
代码说明
- 去掉
df2.reset_index():不需要额外保留df2的原索引,避免新增不必要的列。 ignore_index=True:让concat完成后自动生成从0开始的连续行索引,解决重复索引问题。- 可选的
fillna(0):如果不想保留NaN值,可以用这个方法填充默认值,根据你的业务需求调整填充值。
预期结果
拼接后的DataFrame会包含所有列(datecreated、1-336),两行数据分别对应2022-11-14和2022-11-15,DF2缺失的331、332列会显示NaN(或你设置的填充值),行索引为0和1。
内容的提问来源于stack exchange,提问作者Leb_Broth
相关产品推荐
相关产品推荐

