首页 > 解决方案 > 使用列名在for循环中逐行更新DataFrame

问题描述

我有一个包含三列的 DataFrame df:“val_1”、“val_2”和“winning_val”。'Val_1' 和 'val_2' 充满了值,而 'winning_val' 充满了 NaN。我希望这个 for 循环循环遍历 df 并填写 'winning_val' 列。

for i, row in df.iterrows():
            df.at[i, 'winning_val'] = find_winner(row)

此代码不修改 df,并保持 'winning_val' 列充满 NaN。我还需要能够通过字符串名称而不是索引来访问列。

标签: pythonpandas

解决方案


你有没有尝试过

df['winning_val'] = df.apply(find_winner, axis=1)

wherefind_winner是定义用于处理数据框行的函数,例如:

def find_winner(row):
    return max(row['val_1'], row['val_2'])

推荐阅读