pandas,替换数据框中的值,具体取决于其他列

时间:2018-01-29 11:47:31

标签: python pandas dataframe

我有一个如下的数据框,

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'])})

尝试过滤器,那个aint泛型,所以任何正确的方法都可以做到!!

1 个答案:

答案 0 :(得分:3)

这应该有效:

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']