Я хочу создать массив с NaN
везде, кроме определенных индексов, где я размещаю некоторую строку.
def to_padded_array(vals, idxs, length, fill_na):
arr = np.array([fill_na] * length)
np.put(arr, idxs, vals)
ser = pd.Series(arr)
return tuple(ser.tolist())
У меня есть примеры vals и idx, которые выглядят так:
idxs = np.array([0,4,5]) # this was made to be a numpy array
vals = pd.Series(['a', 'b', np.nan], name='city') # this actually would come from a pd.agg function
Обратите внимание, что начальный вход vals
имеет NaN
. Если я пытаюсь установить fill_na=np.nan
, я получаю сообщение об ошибке:
could not convert string to float: 'a'
Если я использую fill_na=None
, я получаю None
и NaN
, что не хорошо:
>>> to_padded_array(vals, idxs, length=6,fill_na=None)
('a', None, None, None, 'b', nan)
Я думал об использовании pandas для обойти эту проблему, но я еще не нашел эквивалент для numpy.put
для pandas. Что я могу с этим поделать?