You need to enable JavaScript to run this app. pandas无需转df如何将iloc[0]返回的Series与DataFrame拼接为2行4列
优惠活动
大模型
产品
解决方案
定价
更多

pandas无需转df如何将iloc[0]返回的Series与DataFrame拼接为2行4列

问题解答:pandas Series与DataFrame按行拼接

1. append与concat结果差异的原因

  • append方法针对单行追加场景做了特殊处理:传入Series时,会自动把Series的索引识别为列名,将整个Series作为单行数据与原DataFrame的列对齐后追加,因此可以得到预期的2×4结果。
  • pd.concat没有做单行适配:默认沿axis=0拼接时,会把传入的Series当作单列数据处理,Series的索引会被作为行索引与原DataFrame的行索引对齐。你的示例中df2的行索引是[0],Series的索引是['a','b','c','d'],拼接后行索引合并为5个值;原df2的列是['a','b','c','d'],作为单列传入的Series默认列名为0,列合并后也为5个值,最终得到5×5的结果。

2. 无需显式将Series转为DataFrame的实现方法

你不需要手动用iloc[[0]]或者iloc[0:1]切片生成DataFrame,可选择以下方法实现需求:

方法1:append方法(仅兼容pandas 2.0以下版本)

你现有的写法已经可以实现需求:

dfAppendSeries = df1.append(df2.iloc[-1])

注意append方法在pandas 1.4版本后被标记为废弃,2.0及以上版本已移除,不建议作为长期方案。

方法2:concat配合Series转置

对Series调用to_frame().T即可隐式转为单行DataFrame,无需手动切片:

# series1作为首行插入,返回shape为(2,4)
res = pd.concat([series1.to_frame().T, df2], ignore_index=True)

方法3:loc索引赋值(无需拼接函数)

直接通过索引赋值插入首行,写法更简洁:

res = df2.copy()
# 在索引-1的位置插入series1作为首行
res.loc[-1] = series1
# 重置索引保证顺序正确
res = res.sort_index().reset_index(drop=True)

3. 官方文档翻译

你引用的pd.concat官方文档对应翻译如下:

返回
对象,与输入对象的类型一致
当沿索引(axis=0)拼接所有Series时,返回Series。当输入对象中至少包含一个DataFrame时,返回DataFrame。当沿列(axis=1)拼接时,返回DataFrame。

内容的提问来源于stack exchange,提问作者topher217

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 03:21:00