Python 如果单元格值小于指定值,则将数据帧中的单元格乘以常数

Python 如果单元格值小于指定值,则将数据帧中的单元格乘以常数,python,Python,如果单元格值小于指定值,则将数据帧中的单元格乘以常数。 想做下面的事情。其中,true导致乘法发生,并将新值重新分配给数据帧中的单元格。false应该保留该值。但我在网上看到的这些错误和其他东西都不起作用: if df['value'] < 50: df['value']=df['value']*(1*10^5) else: df['value']=df['value'] ValueError: The truth value of a Series is ambig

如果单元格值小于指定值,则将数据帧中的单元格乘以常数。

想做下面的事情。其中,true导致乘法发生,并将新值重新分配给数据帧中的单元格。false应该保留该值。但我在网上看到的这些错误和其他东西都不起作用:

if  df['value'] < 50:
    df['value']=df['value']*(1*10^5)
else:
    df['value']=df['value']


ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
如果df['value']<50:
df['value']=df['value']*(1*10^5)
其他:
df['value']=df['value']
ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
我也尝试过:

df['value'] = df['value'].apply(lambda x: [y if y<=50 for y in x])

df['value']=df['value'].apply(lambda x:[y如果y您可以这样做来获得结果

df.loc[df['value'] < 50, 'value'] = df['value']*(1*10**5)
df.loc[df['value']<50,'value']=df['value']*(1*10**5)
有关IF条件的更多文档可以找到

如果你想使用lambda函数,你可以这样做

df['value'] = df['value'].apply(lambda x: x*(1*10**5) if x < 50 else x)
df['value']=df['value']。如果x<50,则应用(λx:x*(1*10**5)
同意@Grzegorz Skibinski。这是一个更好的选择:

df.loc[df['value'] < 50, 'value'] *= 10**5
df.loc[df['value']<50,'value']*=10**5

您的else语句在第一部分是否正确?您是否计划在该部分更新
df['price']
:如果执行else语句,则该值应重新分配给'value'或单独保留。对于其他部分,不,df['value']在技术上不需要更新。谢谢您的精彩捕获。看看这是否有效
df.loc[df]['value']<50,'value']=df['value']*(1*10^5)
您可以发布数据框中的示例数据吗?这仅在列
为数字时有效。如果它是字符串或其他数据类型,则无效。我尝试并得到错误:TypeError:'这很奇怪,因为'value'是floatshare类型,请共享数据框的副本,以便我可以帮助您lambda函数工作:df['value']=df['value'].apply(λx:x*(1*10^5)(如果x<50,则为x),但如果我想将单元格乘以1*10^5,则不会给出正确的结果值
apply()
可能是这里最慢的选项,那么:
df.loc[df['value']<50,'value']*=10^5
怎么样?