如何向DataFrame添加行并按条件修改指定行?
解决方案
原始数据准备
先还原你的DataFrame和字典:
import pandas as pd import numpy as np df = pd.DataFrame({ 'a': [1, 5, 2, 5, 1], 'b': [2, 6, 3, 6, 2], 'c': [3, 7, 4, 7, 3], 'd': [4, 8, 5, 8, 4] }) dic = {'b':6, 'd':2}
任务1:添加字典对应行,缺失列填充NaN
用pd.concat(替代已弃用的append方法)直接构造包含所有列的新行,缺失列自动填充NaN:
# 生成包含所有列的新行数据 new_row = pd.DataFrame.from_dict([dic], columns=df.columns) # 合并到原DataFrame df = pd.concat([df, new_row], ignore_index=True)
执行后新增行的a和c列会自动填充为NaN,最终结果示例:
a b c d 0 1.0 2.0 3.0 4.0 1 5.0 6.0 7.0 8.0 2 2.0 3.0 4.0 5.0 3 5.0 6.0 7.0 8.0 4 1.0 2.0 3.0 4.0 5 NaN 6.0 NaN 2.0
任务2:按条件a=3修改对应行的b和d列
你之前的代码有两个问题:一是错误引用了不存在的date列,二是直接用dic.values()(这是dict_values对象而非列表)导致赋值异常。以下是两种正确写法:
方法1:转列表赋值
df.loc[df['a'] == 3, dic.keys()] = list(dic.values())
方法2:循环键值对赋值(更直观)
for col, val in dic.items(): df.loc[df['a'] == 3, col] = val
注:如果DataFrame中没有a=3的行,代码不会产生任何变化,属于正常情况。
内容的提问来源于stack exchange,提问作者gotiredofcoding
相关产品推荐
相关产品推荐

