Python:将字符串列表转换为带有空/无的浮点数

问题描述 投票:-1回答:2

我有a = ['1','2','','17']

我想对其执行最小/最大操作。我不能使用pandas / numpy。

但是,我无法使用float()函数将”转换为浮点数。如果我使用None而不是',也会发生同样的事情。

我在matlab中从未遇到过这个问题,所以我迷上了python。

我可以使用[float(i) for i in var if i]将其转换为浮点数,但是我需要保持相同的大小,以便以后处理索引。此方法将删除空字符串,这不是我想要的,我需要一个值(显然不是None),我可以对其应用均值/最大值/最小值等

python string nan min is-empty
2个回答
0
投票

您可以这样定义“ else”值:

a = ['1','2','','17']
s = [float(i) if i else 0 for i in a]
print(s)

输出:

[1.0, 2.0, 0, 17.0]

0
投票

您可以定义一个试图将值转换为浮点数的函数,如果不能,则返回None,然后使用列表推导来创建列表的转换和过滤版本,您可以使用min /max/。 ..在保持原始状态不变的情况下。

def try_float(v):
   try:
       return float(v)
   except Exception:
       return None

# Original:
a = ['1', '2', '', '17', None, 'purple', -7, 0]

# Containing floats and Nones:
floaty_a = [try_float(item) for item in a]

# Filter out the Nones:
filtered_a = [item for item in floaty_a if item is not None]

# Compute min/max:
print(min(filtered_a))
print(max(filtered_a))
© www.soinside.com 2019 - 2024. All rights reserved.