Pandas中将字典内容追加到现有行对应列的实现问题咨询
Pandas逐行追加字典键值对到对应行的解决方案
核心思路
逐行处理时将每行生成的计算字典转为Series对象,和原DataFrame拼接时Pandas会自动按列名对齐,不同行字典缺少的键会自动填充NaN,无需手动处理列匹配逻辑。
完整代码示例
import pandas as pd # 构造原始DataFrame df = pd.DataFrame([ [1, 2, 3], [4, 5, 6] ], columns=['A', 'B', 'C']) # 逐行计算逻辑,返回字典(可替换为你的业务逻辑) def calc_row(row): if row['A'] == 1: return {'D': 4, 'E': 5} else: # 模拟不同行字典键不一致的场景 return {'E': 7, 'F': 8} # 方法1:普通数据量下直接用apply实现 result = pd.concat([ df, df.apply(calc_row, axis=1).apply(pd.Series) ], axis=1) # 方法2:大数据量优化写法,减少apply开销 # res_list = [] # for _, row in df.iterrows(): # res_list.append(calc_row(row)) # result = pd.concat([df, pd.DataFrame(res_list)], axis=1) print(result)
输出结果
A B C D E F 0 1 2 3 4.0 5 NaN 1 4 5 6 NaN 7 8.0
补充说明
- 若不需要保留空值,可后续调用
fillna()方法填充指定默认值 - 拼接时不会修改原有列的数据,仅新增字典中存在的键对应的列
内容的提问来源于stack exchange,提问作者mymemesarespiciest
相关产品推荐
相关产品推荐

