迭代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字段code name 001 A 002 B 003 C - df1:包含
code、title、cu字段code title cu 001 产品1 个 002 产品2 台 003 产品3 件 - dfsum:需要补充
title、cu字段的目标DataFramecode name title cu 001 A 002 B 003 C
解决方案
方法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
相关产品推荐
相关产品推荐

