首页 > 解决方案 > 用具有该值的列中的值替换列中的值

问题描述

我想将值替换为valcol列中的值,即值。假设您的 df 看起来像下面这样:

  col1 col2 col3 valcol
0    a    d    g   col1
1    b    e    h   col1
2    c    f    i   col2

我想valcol_new变成这样:

  col1 col2 col3 valcol valcol_new
0    a    d    g   col1          a
1    b    e    h   col1          b
2    c    f    i   col2          f

如何做到这一点?

df 用于测试:

df = pd.DataFrame({'col1': ['a', 'b', 'c'], 'col2': ['d', 'e', 'f'], 'col3': ['g', 'h', 'i'], 'valcol': ['col1', 'col1', 'col2']})

标签: pythonpandas

解决方案


您可以通过enumerate()方法和列表理解和loc[]访问器来做到这一点:

df['valcol']=[df.loc[x,y] for x,y in enumerate(df['valcol'])]

现在,如果您打印 df ,您将获得所需的输出:

    col1    col2    col3    valcol
0   a       d       g       a
1   b       e       h       b
2   c       f       i       f

推荐阅读