从列表中删除标点符号并将字符串值转换为 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
我想从列中删除美元符号和逗号并转换为浮动。 这是我到目前为止所做的,它没有用。实际上什么都没有改变。 数据看起来像 ["$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