Для определенного столбца pandas dataframe этот столбец на самом деле представляет собой 16-битные данные, преобразованные в BCD.Я хочу извлечь только бит 14-8 определенной строки и преобразовать в BCD.Приведенная ниже формула работает для небольшого фрейма данных, как показано ниже.
df=pd.DataFrame({'Value':[128,128,436,465], 'Minutes':[1280,16384,1792,1536] })
df['Minutes_1']=df.Minutes.apply(int).apply(bin).str[2:].str[:-8].apply(int, base=2)
df
Но когда я применяю
df['Minutes_1']=df.Minutes.apply(int).apply(bin).str[2:].str[:-8].apply(int, base=2)
для большего фрейма данных из 688126 строк, я получаю сообщение об ошибке
недопустимый литерал для int () с основанием 2: ''
Note: Few values of the row are
0, 256,512,768,1024,1280,1536,1792,2048,2304,4096,4352,4608,4864,
5120,5276,5632,5888,6144,6400,8192,8448,8704,8960,9216,9472,9728,9984,10240,10496,12288,
12544,12800,13056,13312,13568,13824,14080,14336,14592,16384,16640,16896,17152,17408,17920,
18176,18432,18688,20480,20736,20992,21248,21504,21760,22016,22272,22528,22784
Ошибка, как показано ниже
ValueError Traceback (последний вызов последнего) в 1df.LO_TIME_0_J2_0 ----> 2 df ['Minutes_1'] = df.LO_TIME_0_J2_0.apply (int) .apply (bin) .str [2:]. str [: - 8] .apply (int, base = 2) 3 df.LO_TIME_0_J2_0
C: \ ProgramData \ Anaconda3 \ lib \ site-packages \ pandas \ core \ series.py в apply (self, func, convert_dtype, args, ** kwds) 3192 остальное: 3193values = self.astype (object) .values -> 3194 mapped = lib.map_infer (values, f, convert = convert_dtype) 3195 3196, если len (сопоставленный) и isinstance (сопоставленный [0], Series):
pandas / _libs / src \ inference.pyx в pandas._libs.lib.map_infer ()
C: \ ProgramData \ Anaconda3 \ lib \ site-packages \ pandas \ core \ series.py в (x)3179 # обрабатывать ufuncs и lambdas 3180, если kwds или argsd is isinstance (func, np.ufunc): -> 3181 f = лямбда-x: func (x, * args, ** kwds) 3182 else: 3183 f = func
ValueError: недопустимый литерал для int () с основанием 2: ''
Пожалуйста, помогите