[英]Converting specific strings (numbers) from a list of lists to floats
所以我有一個包含字符串的列表列表:
[['10.00', 'name1'], ['8.50', 'name2'], ['7.50', 'name3'], ['15.00', 'name4'], ['12.50', 'name5'], ['9.50', 'name6']]
我要做的是僅將所有列表中的數字轉換為浮點數以獲得如下結果:
[[10.00, 'name1'], [8.50, 'name2'], [7.50, 'name3'], [15.00, 'name4'], [12.50, 'name5'], [9.50, 'name6']]
有什么辦法可以嗎?
如果數字總是在同一個地方,你可以做這樣的事情來快速解決
_list = [['10.00', 'name1'], ['8.50', 'name2'], ['7.50', 'name3'], ['15.00', 'name4'], ['12.50', 'name5 '], ['9.50', 'name6']]
_list = [[float(n[0]), n[1]] for n in _list]
如果第一個元素始終是數字,則可以使用列表推導。
lst = [['10.00', 'name1'], ['8.50', 'name2'], ['7.50', 'name3'], ['15.00', 'name4'], ['12.50', 'name5'], ['9.50', 'name6']]
lst = [[float(i[0]), i[1]] for i in lst]
與發布的 nepdavis 相同,但使用 lambda 表達式:3
lst = [['10.00', 'name1'], ['8.50', 'name2'], ['7.50', 'name3'], ['15.00', 'name4'], ['12.50', 'name5'], ['9.50', 'name6']]
lst = map(lambda innerList: [float(innerList[0]), innerList[1]], lst)
如果您不想依賴第一個值是數字,則可以嘗試進行轉換,如果失敗則返回原始值。
def to_float(n):
try:
return float(n)
except ValueError:
return n
lst = [['10.00', 'name1'], ['8.50', 'name2'], ['7.50', 'name3'], ['15.00', 'name4'], ['12.50', 'name5'], ['9.50', 'name6']]
lst = [[to_float(n) for n in N] for N in lst]
print(lst)
如果數據格式正確,你可以做這樣的事情
import pandas as pd
lists = [['10.00', 'name1'], ['8.50', 'name2'], ['7.50', 'name3'], ['15.00', 'name4'], ['12.50', 'name5'], ['9.50', 'name6']]
listdf = pd.DataFrame(lists)
listdf[0] = listdf[0].astype(float)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.