我有一个数据框说
name age hb
ali 34 14
jex 16 13
aja 24 16
joy 23 12
我想将列'age'减去15,将'hb'列减去10。
if the value age-15 < 10 AND hb-10 < 5 :
select name
不应修改原始数据框
答案 0 :(得分:1)
mask = (df.age-15 < 10) & (df.hb-10 < 5)
s = df.loc[mask, 'name']
或者:
s = df.query('age-15 < 10 & hb-10 < 5')['name']
或者更好,谢谢,@ pir:
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)]
答案 1 :(得分:1)
如果要对不同的列使用不同的值进行操作,则与其他不同的值进行比较,对于不同的列,您可以创建具有与列名称对齐的适当索引值的Series。我必须将原始数据框子化为仅关注的列。
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