从列表中删除标点符号并将字符串值转换为 python 中的浮点数

Remove punctuations from list and convert string value to float in python

我想从列中删除美元符号和逗号并转换为浮动。 这是我到目前为止所做的,它没有用。实际上什么都没有改变。 数据看起来像 ["$200,00","$1,000.00"..."$50.00"]

import pandas as pd
import string
y_train = train.iloc[:,-1]
needtoclean=y_train.to_list()#''.join(y_train.to_list())

to_delete = set(string.punctuation) - {'$',','} 
clean = [x for x in needtoclean if x not in to_delete]

试试这个,下次你应该post编码

按索引迭代列表以便能够修改值。

1).删除 $

2).转换为浮动

for i in xrange(len(your_list)):
    your_list[i] = float(your_list[i].replace("$", ""))

如果美元符号总是在这些字符串中的相同位置,这应该可以完成工作。 我假设您使用 pandas 数据框。

df["needtoclean"] = df["needtoclean"].apply(lambda x: float(x[1:].replace(",", "")))

列表理解就很容易解决了。

unclean = ['.00', '5.00']  # your data
clean = [float(value[1:]) for value in unclean if value.startswith('$')]
# you can remove "if value.startswith('$')" if you are sure 
# that all values start with $

如果你想要它作为功能:

unclean = ['.00', '5.00']

def to_clean_float(unclean):
    return [float(value[1:]) for value in unclean if value.startswith('$')]

print(to_clean_float(unclean))  # Gives: [58.0, 125.0]

如果您不需要它作为原子列表但想进一步处理数据,您也可以创建一个 generator expression。 如果它是一个巨大的列表,它可以节省大量内存。

unclean = ['.00', '5.00']

def to_clean_float(unclean):
    return (float(value[1:]) for value in unclean if value.startswith('$'))

clean_generator = to_clean_float(unclean)
print(list(value for value in clean_generator))  # Gives: [58.0, 125.0]
list_ = ['.00', '.00']       #Your Lise
new_list = []                      #Initialise new list
for elem in list_:                 #Iterate over previous list's elements
    elem = elem.replace("$", '')   #Replace the `$` sign
    new_list.append(float(elem))   #Add the typecasted float to new list