假设我有一个prandas数据框,其列值为年龄,如df.age = {25,35,76,21,23,30}
我想做一个像这样的地方替换:
如果df.age> = 25且df.age< = 35: 用1替换该值 其他: 用0
替换该值我试过这个df [df.age> = 7.35而且df.age< = 7.45,' age'] = 0 但似乎没有用。
答案 0 :(得分:4)
您还可以创建一个功能来检查您的条件,并应用于数据框:
def condition(value):
if 25 <= value <= 35:
return 1
return 0
# stealing sample from @AnandSKumar because I'm lazy
In [32]: df
Out[32]:
age
0 25
1 35
2 76
3 21
4 23
5 30
In [33]: df['age'] = df['age'].apply(condition)
In [34]: df
Out[34]:
age
0 1
1 1
2 0
3 0
4 0
5 1
或者使用一个带有lambda的衬垫:
df['age'] = df['age'].apply(lambda x: 1 if 25 <= x <= 35 else 0)
答案 1 :(得分:3)
您可以根据条件将系列与值(25/35)进行比较,然后使用astype(int)
将True/False
值转换为1/0
。示例 -
df['age'] = ((25 <= df['age']) & (df['age'] <= 35)).astype(int)
演示 -
In [2]: df = pd.DataFrame([[25], [35], [76], [21], [23], [30]],columns=['age'])
In [3]: df
Out[3]:
age
0 25
1 35
2 76
3 21
4 23
5 30
In [6]: ((25 <= df['age']) & (df['age'] <= 35)).astype(int)
Out[6]:
0 1
1 1
2 0
3 0
4 0
5 1
Name: age, dtype: int32