2024-04-19 07:36:12 发布
网友
假设我有一个pandas数据框,列值为age,如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 但似乎没用。
可以根据条件将序列与值(25/35)进行比较,然后使用astype(int)将True/False值转换为1/0。示例-
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
您还可以创建一个函数来检查您的条件,并应用于数据帧:
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)
可以根据条件将序列与值(25/35)进行比较,然后使用
astype(int)
将True/False
值转换为1/0
。示例-演示-
您还可以创建一个函数来检查您的条件,并应用于数据帧:
或者对lambda使用一个行:
相关问题 更多 >
编程相关推荐