代码之家  ›  专栏  ›  技术社区  ›  Shivpe_R

pandas,根据其他列替换数据帧中的值[重复]

  •  0
  • Shivpe_R  · 技术社区  · 7 年前

    我有一个如下的数据框,

    df = pd.Dataframe({'Col1' : pd.Series(['Abc','Cde','Efg','Abc'], index=['a', 'b', 'c','d']),
     'Col2' : pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd']),
     'Col3' : pd.Series([1, 2., 3., 4.], index=['a', 'b', 'c', 'd'])})
    

    根据Col1中列值的值,我想用Col2替换Col3值,

    在这种情况下,Col1值是“Abc”,我想用Col2值更新Col3值,期望输出如下

    pd.Dataframe({'Col1' : pd.Series(['Abc','Cde','Efg','Abc'], index=['a', 'b', 'c','d']),
     'Col2' : pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd']),
     'Col3' : pd.Series([10, 2., 3., 40], index=['a', 'b', 'c', 'd'])})
    

    通过过滤器尝试,这不是通用的,所以任何合适的方法都可以这样做!!

    1 回复  |  直到 7 年前
        1
  •  4
  •   jpp    7 年前

    这应该可以:

    import pandas as pd
    
    df = pd.DataFrame({'Col1' : pd.Series(['Abc','Cde','Efg','Abc'], index=['a', 'b', 'c','d']),
                       'Col2' : pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd']),
                       'Col3' : pd.Series([1, 2., 3., 4.], index=['a', 'b', 'c', 'd'])})
    
    df.loc[df['Col1'] == 'Abc', 'Col3'] = df['Col2']