将列表中的字符串转换为float

时间:2017-04-28 13:46:13

标签: python python-3.x numpy pycharm

这个问题让我疯了。我有一个来自网站的报废数据,并将这些数据放入字典中。因此,我有几个列表,其中一个列表如下所示:

    'In': ['7,051,156,075,145', '878,009,569,197', '427,386,441,994', '278,189,230,134', '230,599,954,634', '197,088,252,840', '101,610,549,933', '78,426,830,219', '80,925,933,532', '58,451,193,176', '55,701,282,247', '49,748,756,546', '48,642,591,960', '45,686,162,172', '44,227,235,911', '40,467,951,256', '16,392,881,465', '5,988,546,624', '41,810,356,569', '23,515,110,330', '35,815,116,718', '10,968,016,226', '518,858,345', '29,947,210,177', '29,030,975,280', '28,803,225,552', '373,570,428', '27,527,784,709', '373,964,822', '514,671,410', '25,875,702,735', '416,462,736', '24,423,209,779', '24,332,893,924', '22,491,450,198', '22,894,037,015', '23,026,866,310', '6,148,324,700', '22,226,875,309', '21,127,010,221', '375,662,568', '18,845,330,059', '238,084,409', '18,338,638,037', '6,469,472,952', '16,988,637,757', '234,705,103', '16,164,528,769', '236,542,082', '15,878,894,181', '15,892,415,892', '384,601,333', '173,719,914', '14,374,301,195', '13,789,745,661', '13,333,600,469', '12,935,822,692', '1,414,494,923', '13,000,908,688', '2,875,324,761', '280,912,611', '12,443,874,812', '12,470,333,848', '188,668,181', '12,092,658,438', '676,583,644', '11,997,025,285', '11,677,854,811', '220,087,430', '11,251,777,539', '11,442,705,899', '8,628,429,553', '190,648,851', '11,187,421,523', '3,684,540,569', '10,670,576,444', '10,740,578,885', '10,582,331,778', '10,557,152,315', '9,804,556,177', '10,325,762,681', '10,193,777,314', '10,241,020,644', '10,218,671,348', '5,565,872,689', '6,066,496,977', '128,971,640', '160,853,134', '3,061,365,095', '8,849,393,167', '182,484,904', '161,406,328', '9,335,264,956', '158,941,175', '8,893,005,099', '132,642,660', '147,492,645', '133,898,533', '8,565,414,335', '8,543,285,361', '1,081,514,186', '8,010,900,010', '344,032,888', '7,851,320,645', '119,252,217', '7,708,770,926', '3,831,828,937', '266,060,360', '7,469,255,927', '2,553,584,433', '7,404,456,294', '1,775,993,183', '7,338,693,939', '7,337,702,662', '7,246,023,792', '3,147,875,441', '142,555,296', '1,953,694,528', '3,918,267,288', '1,324,557,844', '5,683,622,890', '6,927,422,982', '106,687,337', '6,912,850,849', '2,845,801,508', '6,818,774,192', '6,853,915,064', '147,347,763', '344,146,667', '6,711,901,497', '6,570,349,311', '6,519,300,790', '135,371,330', '6,472,184,188', '84,726,075', '6,224,918,718', '5,795,088,428', '5,348,330,674', '76,438,957', '6,156,100,475', '6,046,328,039', '1,572,859,369', '5,966,535,367', '5,960,854,825', '5,844,987,758', '99,526,367', '3,320,692,742', '5,763,785,447', '332,891,989', '5,673,010,795', '2,120,698,374', '5,600,425,762', '3,406,789,774']

值已存储为字符串,我认为可以直接转换为浮点数,但我不知道如何。没关系,我想我可以将这些值转换成浮点数并进一步使用它们。但是我无法让它发挥作用。我将列表分配给变量" bob"并尝试使用以下代码转换为float:

empty = []
der = np.array(empty, dtype = np.float32)
der = np.append(der, bob)

当我尝试

print(der/2)

它给了我这个: " TypeError:ufunc' true_divide'不支持输入类型,并且根据投射规则无法安全地将输入强制转换为任何支持的类型''''"

这是怎么回事?我的错误在哪里?

我感谢任何帮助!感谢

4 个答案:

答案 0 :(得分:4)

你可以使用map和lambda删除逗号并将字符串浮点数列表转换为浮点数列表

result = list(map(lambda x: float(x.replace(",", "")), list_of_string_floats))

对于整数,它将是

result = list(map(lambda x: int(x.replace(",", "")), list_of_string_ints))

没有必要使用numpy

答案 1 :(得分:1)

首先必须摆脱","。

s = '7,051,156,075,145'
f = float(s.replace(',',''))

在此之后, f 是给定字符串的浮点值。

对于整个事情,你可以这样做:

float_list = [float(s.replace(',','')) for s in string_list]

答案 2 :(得分:1)

如果L是您的原始列表,则最易读:

[[float(x) for x in s.split(',')] for s in L ]  

答案 3 :(得分:0)

检查是否有效

print map(lambda x: float("".join(x.split(","))), a)

https://repl.it/H6ZL