Я пытаюсь обновить / изменить определенную часть фрейма данных на основе значения другого столбца.
Если столбец ['a']
равен нулю, заполните столбец ['a']
значением столбца ['b']
, как показано ниже
list_position = [[4, 35]]
df.iloc[list_position[0][0]:list_position[0][1] + 1,:]['a'] = df.iloc[list_position[0][0]:list_position[0][1] + 1,:].apply(lambda row: row['a'] * row['b'] if np.isnan(row['a']) else row['b'], axis=1)
Выдает ошибку как TypeError: an integer is required
.
Traceback (most recent call last):
File "pandas\_libs\index.pyx", line 162, in pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\hashtable_class_helper.pxi", line 958, in pandas._libs.hashtable.Int64HashTable.get_item
TypeError: an integer is required
Любое предложение исправить это очень ценится.
Обновление 1. Я попробовал все три способа, как предложено в 1 повторном ответе
df['Cat1'].fillna(df['Cat2'])
и
2 ответа на этот пост.
1. df['a'][df['a'].isnull()] = df['b']
2. df['a'] = df['a'].fillna(df['b'])
Все выдают такую же ошибку, как:
Traceback (most recent call last):
File "pandas\_libs\index.pyx", line 162, in
pandas._libs.index.IndexEngine.get_loc
File "pandas\_libs\hashtable_class_helper.pxi", line 958, in
pandas._libs.hashtable.Int64HashTable.get_item
TypeError: an integer is required
Это работает, если я заменяю имя столбца на номер столбца, например
df[7] = df[7].fillna(df[8)
Не знаю почему,если у кого-то есть объяснение тому же.