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

如何向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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:50:25