[英]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 int
和float
的绝对值,并且所有其他值都不会改变(所以返回):
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.