Python 在条件有效时,将函数应用于列
我有一个数据帧,比如说:Python 在条件有效时,将函数应用于列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧,比如说: Name Age. Certain value 0 Alex 50.0 12 1 Bob 12.0 45 2 Clarke 13.0 25 我想对年龄列应用一个函数。大概是这样的: def update_age(df): while df["Age"] < df["Certain Value"]: df
Name Age. Certain value
0 Alex 50.0 12
1 Bob 12.0 45
2 Clarke 13.0 25
我想对年龄列应用一个函数。大概是这样的:
def update_age(df):
while df["Age"] < df["Certain Value"]:
df["Age"] = df["Age"] * 2
df["Age"] = df.apply(update_age,axis=1)
def更新时间(df):
而df[“年龄”]
我面临的问题是一个无限循环。似乎有df[“Age”]
没有为每个迭代更新。可能是因为计算后没有返回值,但我不知道怎么做
实际的数据集很复杂,但我试图简化。希望易于理解。工作方式如下:
def process_row(r):
foo = row["Age"]
while foo < row["Certain Value"]:
foo = foo * 2
return foo
工作方式如下:
def process_row(r):
foo = row["Age"]
while foo < row["Certain Value"]:
foo = foo * 2
return foo
是的,这是因为您使用了while循环&没有定义任何条件来破坏外观。相反,请看一看,如果我错了,请纠正我,但是,我可能必须使用while循环,因为在Bob的情况下,函数将年龄乘以2,并且条件还没有无效。因此,它必须再更新一次。更新,比较,更新,比较-并打破循环。我错过什么了吗?谢谢,请尝试
while(df[“Age”]
只需确保您确实要将所有行翻倍,也许您只希望将年龄低于切割的行翻倍?此外,您是否应该返回df
并使用df=update_Age(df)
调用函数?是,这是因为您使用的是while循环&没有定义任何条件来破坏外观。相反,请看一看,如果我错了,请纠正我,但是,我可能必须使用while循环,因为在Bob的情况下,函数将年龄乘以2,并且条件还没有无效。因此,它必须再更新一次。更新,比较,更新,比较-并打破循环。我错过什么了吗?谢谢,请尝试while(df[“Age”]
只需确保您确实要将所有行翻倍,也许您只希望将年龄低于切割的行翻倍?此外,您是否应该返回df
并使用df=update_Age(df)
调用函数?