Мне нужна помощь в создании функции для изменения значения определенных строк в определенных столбцах.
Учитывая следующий кадр данных:
serie = [0, 1, 2, 0, 1, 2, 0, 1, 2]
dataX = [0.1, 0.24, 0.21, 0.1, 0.25, 0.2, 0.2, 0.38, 0.49]
dataY = [0.1, 0.23, 0.21, 0.1, 0.27, 0.2, 0.2, 0.38, 0.49]
dataZ = [0.1, 0.26, 0.21, 0.1, 0.25, 0.2, 0.2, 0.49, 0.59]
dataW = [0.1, 0.23, 0.21, 0.1, 0.28, 0.2, 0.2, 0.49, 0.59]
my_dict = {'serie': serie,
'dataX': dataX,
'dataY': dataY,
'dataZ': dataW,
'dataW': dataZ}
df_serialized = pd.DataFrame.from_dict(my_dict)
Мне нужно изменить столбцы dataY и dataZ наноль всякий раз, когда значение столбца серии равно нулю.
То, что я уже пробовал:
df_serialized[df_serialized.serie == 0][['dataY', 'dataZ']].apply(np.zeros)
возвращает следующее сообщение об ошибке:
TypeError Traceback (большинствопоследний вызов последним) в () ----> 1 df_serialized [df_serialized.serie == 0] [['dataY', 'dataZ']]. apply (np.zeros)
3 кадра / usr/local/lib/python3.6/dist-packages/pandas/core/frame.py в применении (self, func, axis, широковещательный, необработанный, уменьшение, result_type, args, ** kwds) 6485 args = args, 6486 kwds= kwds) -> 6487 return op.get_result () 6488 6489 def applymap (self, func):
/ usr / local / lib / python3.6 / dist-packages / pandas / core / apply.pyв get_result (self) 149 return self.apply_raw () 150 -> 151 return self.apply_standard () 152 153 def apply_empty_result (self):
/ usr / local / lib / python3.6/dist-packages/pandas/core/apply.py в apply_standard (self) 255 256 # вычислить результат с помощью генератора серий -> 257 self.apply_series_generator () 258 259 # обернуть результаты
/ usr /local / lib / python3.6 / dist-packages / pandas / core / apply.py в apply_series_generator (self) 284 try: 285 для i, v в перечислении (series_gen): -> 286 результатов [i] = self.f(v) 287 keys.append (v.name) 288 за исключением исключения как e:
TypeError: («объект« numpy.float64 »не может быть интерпретирован как целое число», «произошел с индексом dataY ')