如何在满足条件时修改Pandas DataFrame某列的第一行数据?
Pandas:当DataFrame首行a列值大于5时修改首行b列值
原始数据
import pandas as pd df = pd.DataFrame( { 'a': [10, 50, 3], 'b': [5, 4, 5], } )
需求
当首行的a列值大于5时,将首行的b列值改为1,期望输出:
a b 0 10 1 1 50 4 2 3 5
你的尝试分析
- 尝试1:
df[df.a > 5].iloc[0]仅筛选出a列大于5的行并取第一行,没有执行修改操作,无法实现需求。 - 尝试2:
df.loc[df.a.iloc[0] > 5, 'b'] = 1这里的布尔条件会作用于所有行,导致所有行的b列都被改为1,不符合仅修改首行的要求。
正确解法
方法1:直接通过iloc定位首行
if df.a.iloc[0] > 5: df.b.iloc[0] = 1
方法2:使用loc结合行标签(适用于行标签为默认0的情况)
if df.loc[0, 'a'] > 5: df.loc[0, 'b'] = 1
执行任意一种方法后,即可得到你想要的结果。
内容的提问来源于stack exchange,提问作者AmirX
相关产品推荐
相关产品推荐

