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

如何堆叠多列值构建Python DataFrame的单列?

问题根因

原有代码输出多列NaN矩阵的核心原因是:每次np.transpose(df_1d.loc[[x]])生成的DataFrame的列名是df_1d的行索引值,两次循环生成的DataFrame列名不一致,append操作会自动按列名对齐,缺少的列就会填充NaN,最终生成多列的二维矩阵。


方案1:用列表中转(最推荐,性能最高)

核心逻辑是先把所有值存到普通Python列表中,最后一次性转为单列DataFrame,避免频繁操作DataFrame带来的性能损耗和对齐问题。
代码示例:

import pandas as pd
import numpy as np

# 初始化空列表存储值
res = []
for x in range(2):
    # 取出对应行的单个值加入列表
    res.append(df_1d.loc[x].item())
# 列表转为单列DataFrame,可自定义列名
A_count_css = pd.DataFrame(res, columns=['your_column_name'])

方案2:直接操作DataFrame(需统一列名)

如果坚持用DataFrame堆叠,需要保证每次append的DataFrame列名完全一致,同时加上ignore_index=True重置行索引:
代码示例:

A_count_css = pd.DataFrame()
for x in range(2):
    # 生成固定列名的单行DataFrame
    d_t = pd.DataFrame([df_1d.loc[x].item()], columns=['your_column_name'])
    A_count_css = A_count_css.append(d_t, ignore_index=True)

注:pandas 2.0及以上版本已经废弃DataFrame.append方法,推荐使用pd.concat替代,实现逻辑如下:

df_list = []
for x in range(2):
    df_list.append(pd.DataFrame([df_1d.loc[x].item()], columns=['your_column_name']))
A_count_css = pd.concat(df_list, ignore_index=True)

额外优化提示

如果你的需求只是从10行1列的df_1d中取指定行生成新的单列DataFrame,不需要写循环,直接切片即可实现:
A_count_css = df_1d.iloc[:2].reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:06:07