Hej napisałem sobie taki fragment kodu:

import pandas as pd
d1 = {"KEY": ["KEY1", "KEY2", "KEY3"], "value": ["A", "B", "C"]}
df1 = pd.DataFrame(d1)
df1["value 2"] = "nothing"

d2 = {"KEY": ["KEY2"], "value_alternative": ["D"]}
df2 = pd.DataFrame(d2)

for k in range(3):
    key = df1.iloc[k]["KEY"]
    print(key)
    if key in list(df2["KEY"]):
        df1.iloc[k]["value 2"] = df2.loc[df2["KEY"] == key, "value_alternative"].item()
    else: 
        df1.iloc[k]["value 2"] = df1.iloc[k]["value"]

ale niestety wartosci w kolumnie value 2 sie nie zmienialy i musialem zmienic kod na nastepujacy:

import pandas as pd
d1 = {"KEY": ["KEY1", "KEY2", "KEY3"], "value": ["A", "B", "C"]}
df1 = pd.DataFrame(d1)
df1["value 2"] = "nothing"

d2 = {"KEY": ["KEY2"], "value_alternative": ["D"]}
df2 = pd.DataFrame(d2)

for k in range(3):
    key = df1.iloc[k]["KEY"]
    print(key)
    if key in list(df2["KEY"]):
        df1.loc[k, "value 2"] = df2.loc[df2["KEY"] == key, "value_alternative"].item()
    else: 
        df1.loc[k, "value 2"] = df1.iloc[k]["value"]

Pytanie tylko dlaczego poprzedni kod nie pozmienial wartosci? Jaki jest najbardziej elegancki sposob zeby zmieniac w petli wartosci w danym DataFramie w podanym wierszu i kolumnie?