Как написать - df["revenue"][counter]=addr, чтобы интерпретатор не выдавал ошибки?

import pandas as pd
df = pd.read_csv("logs.tsv",sep='\t')
df.head(19)

df.buy_ts=pd.to_datetime(df.buy_ts)
df.visit_ts=pd.to_datetime(df.visit_ts)
df.dtypes

counter=0
for addr in df["revenue"].to_list():
    addr=addr[1:]
    addr=addr.replace(" ","")
    addr=addr.replace(",",".")
    addr=float(addr)
    df["revenue"][counter]=addr
    counter=counter+1

Ответы (1 шт):

Автор решения: MaxU

попробуйте так:

df.loc[counter, "revenue"] = addr

а еще лучше заменить весь цикл на векторизированное решение:

df["revenue"] = \
    pd.to_numeric(df["revenue"]
                    .str[1:]
                    .replace([r"\s", ","], ["", "."], regex=True), 
                  errors="coerce")

DISCLAIMER: данное решение не тестировалось, т.к. в вопросе отсутствует воспроизводимый пример данных и ожидаемый результат

PS возможно вам будет достаточно указать параметры: pd.read_csv(..., thousands=" ", decimal=","), но для того, чтобы сказать точно нужен пример нескольких строк исходного CSV файла.

→ Ссылка