Я не совсем понимаю проблему в вопросе, но вы можете выбрать конкретные значения в DataFrame
, используя iloc
(позиционный индекс) или loc
(индекс метки). Поскольку вы просите заменить значение в пятой строке первого столбца в наборе данных, мы используем iloc
.
df.iloc[from_row:to_row,column_position]
Чтобы преобразовать значение '10'
в ColA
в строке 5 в int('10')
, просто выберите его и обновите.
df.iloc[5:6,0] = 10
Если вы не знаете, где находится значение, которое необходимо преобразовать, iloc
и loc
не помогут.
Существует несколько способов преобразовать все значения в столбце в конкретный dtype
. Одним из способов было бы использование lambda
-функции.
df[column_name].apply(lambda x: int(x))
Выше lambda
сломается, потому что ваши данные также содержат строку Load
, и вы не можете преобразовать это в int
. Одним из способов решения этой проблемы является добавление условий к вашему lambda
.
df[column_name].apply(lambda x: int(x) if something else something)
Учитывая данные в вашем вопросе, самый простой способ - проверить, не является ли x
'Load'
:
df[column_name].apply(lambda x: int(x) if x != 'Load' else x)
Это становится хлопотом, если в вашем столбце есть множество реальных строк. Если вы хотите использовать lambda
, вы можете составить список реальных строк. А затем проверьте, есть ли x
в списке.
list_of_strings = ['Load', 'Road', 'Toad']
df[column_name].apply(lambda x: int(x) if x not in list_of_strings else x)
Другим способом было бы написать отдельную функцию для управления преобразованием с использованием блоков try / catch.