python pandas根据一种条件更改数据帧中的几列

时间:2018-08-13 15:32:13

标签: python pandas

我是Python和Pandas的新手。我曾与SAS合作。在SAS中,我可以将IF语句与“ Do; End;”一起使用。根据一种条件更新几列的值。
我尝试了np.where()子句,但它仅更新一列。 “ apply(function,...)”也仅更新一列。在函数体内放置额外的update语句并没有帮助。

建议?

2 个答案:

答案 0 :(得分:0)

您可以选择要更改的列,然后使用.apply():

df = pd.DataFrame({'a': [1,2,3], 
                   'b':[4,5,6]})

    a   b
0   1   4
1   2   5
2   3   6


df[['a','b']].apply(lambda x: x+1)

    a   b
0   2   5
1   3   6
2   4   7

link可能会帮助您

答案 1 :(得分:0)

您可以使用:

for col in df:
    df[col] = np.where(df[col] == your_condition, value_if, value_else)

例如:

   a  b
0  0  2
1  2  0
2  1  1
3  2  0

for col in df:
    df[col] = np.where(df[col]==0,12, df[col])

输出:

   a   b
0 12   2
1  2  12
2  1   1
3  2  12

或者,如果您只想将条件应用于某些列,请在for loop中选择它们:

for col in ['a','b']:

或以这种方式:

df[['a','b']] = np.where(df[['a','b']]==0,12, df[['a','b']])