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

Python Pandas按Table字段拆分DataFrame并规避性能警告

DataFrame拆分优化方案(规避性能警告)

问题背景

我是Python新手,目前遇到DataFrame拆分的性能警告问题。现有DataFrame结构如下:

df0 = {'Table':['BKPF','BKPF','BKPF','BSEG','BSEG'],
'Zone':['TCODE', 'BLDAT', 'BLART','HKONT','GSBER'],
'Type':['CHAR','DATE','CHAR','CHAR','CHAR'],
'Len' :[10,8,2,10,4]}
df0 = pd.DataFrame(df0)

需要将其拆分为分别对应Table字段值BKPF和BSEG的两个新DataFrame。之前尝试了两种方法,虽能得到结果但出现性能警告,希望解决该问题,后续还要基于拆分后的列从其他DataFrame迁移数据。

此前尝试的两种方法

方法1

df0 = pd.read_csv(Ztable, sep=';')
df1 = pd.DataFrame(df0)
t_bkpf = df1.loc[df1['Table'] == 'BBKPF']  # 注:此处存在笔误,原数据中值为BKPF而非BBKPF
t_bseg = df1.loc[df1['Table'] == 'BBSEG']

方法2

import numpy as np
t_bkpf = pd.DataFrame()
t_bseg = pd.DataFrame()
for index, row in df1.iterrows():
    if row['Table'] == 'BKPF':
        t_bkpf[row['Zone']] = np.nan

    if row['Table'] == 'BSEG':
        t_bseg[row['Zone']]= np.nan


df_bkpf = t_bkpf.copy()
df_bseg = t_bseg.copy()

优化方案(无性能警告)

方案1:按Table分组拆分(高效原生方法)

利用pandas原生优化的groupby方法,一次性完成分组拆分,不会触发性能警告:

# 确保df0为DataFrame结构
df0 = pd.DataFrame(df0)
# 按Table字段分组
table_groups = df0.groupby('Table')
# 提取目标分组对应的DataFrame
t_bkpf = table_groups.get_group('BKPF')
t_bseg = table_groups.get_group('BSEG')

方案2:布尔索引优化(修正笔误+避免视图警告)

如果偏好布尔索引方式,需修正笔误并显式复制避免视图引发的警告:

df0 = pd.read_csv(Ztable, sep=';')
# 生成布尔掩码
mask_bkpf = df0['Table'] == 'BKPF'
mask_bseg = df0['Table'] == 'BSEG'
# 显式复制生成独立DataFrame
t_bkpf = df0[mask_bkpf].copy()
t_bseg = df0[mask_bseg].copy()

方案3:创建空结构DataFrame(适配后续数据迁移需求)

如果你的目标是生成以Zone为列名的空DataFrame(后续用于迁移数据),不要用循环逐列添加,直接提取列名后创建:

# 提取BKPF对应的Zone列名列表
bkpf_cols = df0.loc[df0['Table'] == 'BKPF', 'Zone'].tolist()
# 创建空DataFrame
t_bkpf = pd.DataFrame(columns=bkpf_cols)

# 同理处理BSEG
bseg_cols = df0.loc[df0['Table'] == 'BSEG', 'Zone'].tolist()
t_bseg = pd.DataFrame(columns=bseg_cols)

性能警告原因说明

  • 方法1:未使用.copy()时提取的是原DataFrame的视图,后续修改可能触发警告;同时存在笔误导致匹配不到数据。
  • 方法2:iterrows()循环逐列添加是低效操作,pandas不推荐用循环处理DataFrame,数据量大时性能极差且会触发警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:20:27