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

如何从20个DataFrame中提取指定行并合并为新DataFrame?

解决方法:修复DataFrame合并的问题

你的问题出在append()方法的使用上——Pandas的append()不会原地修改原DataFrame,而是返回一个新的合并后的对象,所以你循环里的dataf.append(data)没有把结果存回dataf,导致最后dataf还是初始的空DataFrame。

下面给你两种可行的解决方案,其中第二种是现在更推荐的写法:

方法1:修正append的赋值逻辑

如果你坚持用append(注意Pandas 2.0+已经标记为弃用),需要把每次append的结果重新赋值给dataf:

import pandas as pd

dataf = pd.DataFrame()
for x in [df1, df2, ..., df20]:
    # 筛选Type=23的行,同时只保留N1、N2列
    data = x.loc[x['Type'] == 23, ['N1', 'N2']]
    dataf = dataf.append(data)

# 重置索引,避免出现重复的索引值
dataf = dataf.reset_index(drop=True)

方法2:用pd.concat更高效(推荐)

pd.concat是Pandas官方推荐的合并多个DataFrame的方法,比循环append效率高很多,尤其是处理大量DataFrame时:

import pandas as pd

# 先把所有目标DataFrame放到一个列表里
all_dfs = [df1, df2, ..., df20]

# 用列表推导式筛选每个DataFrame中符合条件的行,只保留需要的列
filtered_dfs = [df.loc[df['Type'] == 23, ['N1', 'N2']] for df in all_dfs]

# 合并所有筛选后的结果,ignore_index=True自动生成新的连续索引
dataf = pd.concat(filtered_dfs, ignore_index=True)

这样处理后,dataf就会是你期望的、包含所有Type=23行的N1、N2列数据的DataFrame了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:06:28