Python 创建一行for循环时是否可以包含多个语句?

Python 创建一行for循环时是否可以包含多个语句?,python,data-science,Python,Data Science,我有一个数组要遍历。数组由数字和符号组成的字符串组成。 比如:1.105亿欧元 我想在它上面循环,删除所有的欧元符号和M,并返回该数组,其中字符串为int。 如果知道数组是表中的一列,该如何执行此操作?您可以使用列表理解从一个列表构造另一个列表: foo = ["€13.5M", "€15M" , "€167M"] foo_cleaned = [value.translate(None, "€M")] str.translate用第一个参数替换后一个字符串中出现的所有字符 arr = ["€1

我有一个数组要遍历。数组由数字和符号组成的字符串组成。 比如:1.105亿欧元 我想在它上面循环,删除所有的欧元符号和M,并返回该数组,其中字符串为int。
如果知道数组是表中的一列,该如何执行此操作?

您可以使用列表理解从一个列表构造另一个列表:

foo = ["€13.5M", "€15M" , "€167M"]
foo_cleaned = [value.translate(None, "€M")]
str.translate用第一个参数替换后一个字符串中出现的所有字符

arr = ["€110.5M","€110.5M","€110.5M","€110.5M","€110.5M","€110.5M","€110.5M"]

f = [x.replace("€","").replace("M","") for x in arr]
你可以随时调用字符串。初始解决方案可以是这样的:

my_array=['1.105亿欧元','1.115亿欧元','1.125亿欧元']
my_\u数组=[]
对于my_阵列中的元素:
我的数组.append(elem.replace('€','').replace('M','')

此时,数组中仍有字符串。如果要将它们作为int返回,可以改为编写
int(elem.replace('€','').replace('M','')
。但是请注意,在浮点之后,您将丢失所有内容,也就是说,您将以
[110,111,112]
结束,您可以
去除
字符

>>> x = '€110.5M'
>>> x.strip('€M')
'110.5'

您可以使用正则表达式来实现这一点

import re

str =  "€110.5M"
x = re.findall("\-?\d+\.\d+", str )
print(x)

我不太理解问题的第二部分。

您可以使用字符串理解:

numbers = [float(p.replace('€','').replace('M','')) for p in a]
其中:

[110.5, 210.5, 310.5]
这可以应用于以下列表:

>>> ls = [sanitize_string(x) for x in ["€3.5M", "€15.7M" , "€167M"]]
>>> ls
[3500000, 15700000, 167000000]
如果要将其应用于表的列,请执行以下操作:

dataFrame = dataFrame.price.apply(sanitize_string) # Assuming you're using DataFrames and the column is called 'price'

如果您可以提供您已经编写的代码,并将其与预期的输出一起输入,这将是非常有帮助的。为什么您如此担心它是一个单线循环呢?我认为创建一个单独的函数来清理值是一件好事。此外,还不清楚“1.105亿欧元”的预期用途。这应该变成
110.5
(实际上是一个浮动)还是应该变成
110500000
?如果您只想删除欧元符号和M,那么使用。它应该是11050000是的。仅供参考:我发现
.strip()
更适合这种情况。:-)但是,正如OPHO所指出的,1350万欧元应该变成13500000欧元。这绝对是最好的答案,IMHO+1.
dataFrame = dataFrame.price.apply(sanitize_string) # Assuming you're using DataFrames and the column is called 'price'