You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Pandas为DataFrame中满足x=1条件的行添加对应列值

用Pandas实现指定行填充新列数据的方法

这事儿其实挺简单的,咱们可以通过布尔索引结合loc来精准赋值,直接上实操步骤:

1. 先创建示例数据(方便你直接测试)

import pandas as pd

# 原始DataFrame
df = pd.DataFrame({
    'x': [1, 2, 1],
    'y': [2, 3, 6],
    'z': [3, 4, 7]
})

# 需要添加的a列数据
a_data = pd.Series([4, 5], name='a')

2. 核心实现步骤

咱们的思路是:先给原DataFrame新增一个全为NaNa列,然后只给x=1的行填充a_data里的值:

# 新增a列,初始值全为NaN
df['a'] = pd.NA

# 筛选x等于1的行,给这些行的a列赋值a_data的数值
df.loc[df['x'] == 1, 'a'] = a_data.values

3. 验证结果

运行完上面的代码后,打印df就能得到你想要的结果:

x  y  z    a
0  1  2  3  4.0
1  2  3  4  NaN
2  1  6  7  5.0

补充:更简洁的写法(一行搞定)

如果想少写几行,也可以用assign结合where来实现,逻辑是一样的:

df = df.assign(
    a=lambda d: d['x'].eq(1).cumsum().map(pd.Series(a_data.values, index=[1,2])).where(d['x'].eq(1))
)

这里的思路是先给x=1的行做累加标记(1、0、2),再把标记对应到a_data的值,最后用where只保留x=1的行的赋值,其他行留NaN

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

火山引擎 最新活动