如何从dataframe中的列中减去标量值,然后只选择满足某些条件的行

2024-09-29 01:32:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框

name age hb
ali   34  14
jex   16  13
aja   24  16
joy   23  12

我想把“年龄”列减去15,“hb”列减去10。在

^{pr2}$

不应修改原始数据帧


Tags: 数据nameage原始数据ali年龄hbjoy
2条回答

使用^{}^{}

mask = (df.age-15 < 10) & (df.hb-10 < 5)
s = df.loc[mask, 'name']

或者:

^{pr2}$

或者更好,谢谢,皮尔:

s = df.query('age < 25 and hb < 15')['name']

s = df.loc[(df.age < 25) & (df.hb < 15), 'name']

如果需要所有列:

df1 = df.query('age < 25 and hb < 15')

df2 = df[(df.age < 25) & (df.hb < 15)]

如果要对不同的列使用不同的值进行操作,然后与其他不同的值进行比较,同样,对于不同的列,可以使用与列名对齐的适当索引值创建序列。我必须将原始数据帧子集为关注的列。在

to_sub = pd.Series(dict(age=15, hb=10))
to_cmp = pd.Series(dict(age=10, hb=5))
df[df[['age', 'hb']].sub(to_sub).lt(to_cmp).all(1)]

  name  age  hb
1  jex   16  13
3  joy   23  12

相关问题 更多 >