import pandas as pd

df = pd.DataFrame([
    list(map(chr, range(97, 100)))
]).T
df.columns = [fr"col{i}" for i in df.columns]
df["value"] = range(df.shape[0])
df = pd.concat([df, df])
df.reset_index(inplace=True, drop=True)

df_rep = df.sample(2)
df_rep.reset_index(inplace=True, drop=True)
# df_rep.loc[0, "value"] = 100  # 避免SettingWithCopyWarning df_rep.iloc[0]["value"] = 100
df_rep["value"] = df_rep["value"].apply(lambda x: x*100 if x else -100)

# 根据df_rep替换df对应值
import pandas as pd

df = pd.DataFrame([
    list(map(chr, range(97, 100)))
]).T
df.columns = [fr"col{i}" for i in df.columns]
df["value"] = range(df.shape[0])
df = pd.concat([df, df])
df.reset_index(inplace=True, drop=True)

df_rep = df.sample(2)
df_rep.index = [100] * 2
df_rep["value"] = df_rep["value"].apply(lambda x: x*100 if x else -100)

# 如何根据df_rep替换df对应值
for index, row in df_rep.iterrows():
    print(index)  # 返回index label 而不是像enumerate那样根据长度生成新的index


import pandas as pd

df = pd.DataFrame([
    list(map(chr, range(97, 100)))
]).T
df.columns = [fr"col{i}" for i in df.columns]
df["value"] = range(df.shape[0])
df = pd.concat([df, df])
df.reset_index(inplace=True, drop=True)

df_rep = df.sample(2)
df_rep["value"] = df_rep["value"].apply(lambda x: x*100 if x else -100)

# 如何根据df_rep替换df对应值

# 根据index
# 需要index保持一致
# for index, row in df_rep.iterrows():
#     df.loc[index, "value"] = row.at["value"]

# 根据col0
# 不根据query筛选 而是方括号 这样固定了index
for _, row in df_rep.iterrows():
    key = row.at["col0"]
    df.loc[
        df["col0"] == key
    ] = row.at["value"]

print(df)