繁体   English   中英

在 lambda function python 中使用传入 if 语句

[英]using pass in if statement in lambda function python

我在 pandas、python 中有一个df ,其中大部分是浮点值,但包含一些字符串,如下所示:

index  cashflow    date          changeinvalue
0      5000        2019-12-31    9300  
1      4000        2019-12-31    -4000  
2      -2000       2019-12-31    -9000  

我正在尝试使用应用ZC1C425268E68385D1AB5074C17A94F14F14Z和Z945FC44951818B9B9B9B9B9F32868DB468DB46CC1C1C1C425268E5555514BERT5517BBIN55174C174C174NF4NF4NF4NFEN4FYNEN FER MER TERER TEN4FEN4FEN4FEN4FEN4FEN4FEN4FENEN FER MEN FER MEN FER MEN FER MEN FER MENTEN FER DYENF4FENEN FERSTEN 但是我想我可能错误地使用了 lambda function ,因为使用以下代码我收到以下错误:

df.apply(lambda x: abs(x) if isinstance(x, str) == False else pass)

SyntaxError: invalid syntax

有人可以帮助我吗? 谢谢

Select 仅按DataFrame.select_dtypes的数字列并将它们转换为绝对值:

cols = df.select_dtypes(np.number).columns
df[cols] = df[cols].abs()
print (df)
       cashflow        date  changeinvalue
index                                     
0          5000  2019-12-31           9300
1          4000  2019-12-31           4000
2          2000  2019-12-31           9000

您的解决方案失败了,因为需要按元素进行测试,而不是按apply中的列。

因此,如果需要单独测试每个值,请使用DataFrame.applymap ,然后测试 numeric intfloat的绝对值,并且所有其他值都不会改变(所以返回):

df = df.applymap(lambda x: abs(x) if isinstance(x, (int, float)) else x)

你可以做

df.columns = df.columns.abs()

那应该行得通。

每列应用应该可以完成这项工作。

IE

df.columns = df.columns.abs()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM