То, что я хочу сделать:
Преобразовать строку, представляющую процент хх% к поплавку между 0 и 1Numpy I/O: конвертирование% процент плавать между 0 и 1
Мой код:
#a. general case
data = "1, 2.3%, 45.\n6, 78.9%, 0"
names = ("i", "p", "n")
a = np.genfromtxt(io.BytesIO(data.encode()), names = names, delimiter = ",")
print (a) # returns [(1.0, nan, 45.0) (6.0, nan, 0.0)]
print (a.dtype) # reason: default dtype is float, cannot convert 2.3%, 78.9%
#b. converter case
convertfunc = lambda x: float(x.strip("%"))/100 # remove % and return the value in float (between 0 and 1)
b = np.genfromtxt(io.BytesIO(data.encode()), names = names, delimiter = ",", converters = {1:convertfunc}) # use indices for 2nd column as key and do the conversion
print (b)
print (b.dtype)
Моя проблема:
в общем случае процент в% будет напечатано как нан. Поскольку тип dtype является float, процентное соотношение в% не может быть преобразовано. Таким образом, я попробовал метод конвертера.
Однако, когда я запускаю код, возникает ошибка:
convertfunc = lambda x: float(x.strip("%"))/100 # remove % and return the value in float (between 0 and 1)
TypeError: a bytes-like object is required, not 'str'
Любой знает, что здесь проблема? (Я использую python3.5)
Благодарим за любые ответы.
Большое спасибо. Это действительно ответило на мой вопрос. –