You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用pandas.concat实现DataFrame.append追加Series效果

解决方案

完全可以通过pd.concat实现和原append方法完全一致的追加效果,你之前得到错位结果,是因为直接传入Series时concat的对齐逻辑和append不同,只要调整待拼接对象的结构即可。

问题原因

  • 原DataFrame.append()方法追加Series时,会自动将Series的name作为新行的行索引,将Series的索引和原DataFrame的列做匹配填充值。
  • 直接将Series传入pd.concat做纵向拼接时,函数默认会把Series作为新列处理,导致行、列索引错位,出现大量NaN值。

正确实现代码

只需要在拼接前将待追加的Series转换为和原透视表列结构一致的单行DataFrame,再做纵向拼接:

>>> import pandas as pd
>>> df = pd.DataFrame({
... 'id':['A','B','C','A','B','C'],
... 'par':['x','x','x','y','y','y'],
... 'val':[1,2,3,4,5,6]})
>>> pv = df.pivot_table(index="id", columns='par', values="val", aggfunc="sum")
>>> avg = pv.mean().rename('MyFunc')
>>> # 将Series转成单行DataFrame后纵向拼接
>>> pd.concat([pv, avg.to_frame().T])
par       x    y
id
A       1.0  4.0
B       2.0  5.0
C       3.0  6.0
MyFunc  2.0  5.0

关键操作avg.to_frame().T的作用:

  1. to_frame()先将索引为x/y的平均值Series,转换为单列DataFrame
  2. .T做转置后,得到行索引为MyFunc、列名为x/y的单行DataFrame,和原透视表pv的列结构完全匹配,拼接后不会出现错位。

内容的提问来源于stack exchange,提问作者Orlando Rivera Letelier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 01:57:26