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

无法将DataFrame选中列的值追加至已有DataFrame问题求助

问题原因与修复方案

核心问题:列名不匹配

你把selected_columns_a转成values再重建DataFrame时,设置了columns=None,这会让新生成的DataFrame列名变成默认的0、1、2。而你的df_b列名应该和df_a的前3列不一致,导致append时因为列名不匹配,所有数据都无法对应到df_b的列里,最终全是NaN;用concat时则会因为列名不同,直接新增3列。

修复代码

完全不需要把数据转成values再重建DataFrame,直接用筛选后的selected_columns_a就行,它本身就保留了原有的列名:

# 直接筛选df_a的前3列,保留原列名
selected_columns_a = df_a.iloc[:, 0:3]

# 直接append,列名匹配就不会出问题
df_b = df_b.append(selected_columns_a, ignore_index=True)

print(df_b)

循环里的注意事项

如果是在循环中使用,注意每次append前确保selected_columns_a的列名和df_b完全一致,另外可以提前初始化df_b的列名和df_a前3列一致,比如:

# 初始化df_b,确保列名和df_a前3列一致
df_b = pd.DataFrame(columns=df_a.columns[:3])

# 循环内操作
for ...:
    selected_columns_a = df_a.iloc[:, 0:3]
    df_b = df_b.append(selected_columns_a, ignore_index=True)

另外注意:pandas 2.0+里append方法已经被弃用,如果你用的是高版本pandas,循环里可以用列表暂存数据,最后一次性concat,效率更高:

temp_list = []
for ...:
    selected_columns_a = df_a.iloc[:, 0:3]
    temp_list.append(selected_columns_a)

# 最后合并所有数据
df_b = pd.concat(temp_list, ignore_index=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:27:35