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

迭代DataFrame行列提取值至新表,基于code列关联匹配指定列至dfsum

Pandas 数据处理解决方案

一、遍历DataFrame行/列并提取值到新DataFrame

1. 遍历行的常用方法

  • 使用iterrows():按行迭代,返回(index, Series)对,适合小数据集
import pandas as pd

# 示例原DataFrame
df_original = pd.DataFrame({'code': ['001', '002', '003'], 'name': ['A', 'B', 'C']})
df_new = pd.DataFrame(columns=['code', 'name'])

for idx, row in df_original.iterrows():
    # 提取需要的字段,添加到新DataFrame
    df_new.loc[idx] = [row['code'], row['name']]
  • 使用itertuples():性能优于iterrows(),返回命名元组
df_new = pd.DataFrame(columns=['code', 'name'])
for row in df_original.itertuples(index=False):
    df_new.loc[len(df_new)] = [row.code, row.name]

2. 遍历列的方法

直接通过列名遍历,提取整列数据到新DataFrame

df_new = pd.DataFrame()
# 提取指定列
df_new['code'] = df_original['code']
df_new['name'] = df_original['name']

二、多DataFrame关联匹配(基于code字段)

数据说明

  • df:包含code、name字段
    codename
    001A
    002B
    003C
  • df1:包含code、title、cu字段
    codetitlecu
    001产品1个
    002产品2台
    003产品3件
  • dfsum:需要补充title、cu字段的目标DataFrame
    codenametitlecu
    001A
    002B
    003C

解决方案

方法1:使用merge关联后更新dfsum

# 第一步:将df和df1按code字段关联
merged_df = pd.merge(df, df1, on='code', how='inner')

# 第二步:将关联后的title和cu字段更新到dfsum
dfsum = pd.merge(dfsum, merged_df[['code', 'title', 'cu']], on='code', how='left')

方法2:使用映射字典快速匹配

# 从df1创建code到title、cu的映射字典
title_map = df1.set_index('code')['title'].to_dict()
cu_map = df1.set_index('code')['cu'].to_dict()

# 直接映射填充dfsum
dfsum['title'] = dfsum['code'].map(title_map)
dfsum['cu'] = dfsum['code'].map(cu_map)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 04:30:58