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