Pandas:搜索并向多列的单元格添加值

时间:2017-08-25 08:07:55

标签: python pandas dataframe

假设我搜索此pension AND NOT message:(view.html) 这样的数据框,然后我想分别向搜索结果的df[df['a'] > 5]b列添加5和10。

例如,

c

现在我想将5和10添加到> 5的单元格中,结果看起来像这样

 a  b  c
 7  2  5
 3  4  7
 6  1  3

那么,我该怎么做呢?

3 个答案:

答案 0 :(得分:5)

可以解决问题的单线:

df.loc[df.a > 5, ['b', 'c']] += (5, 10)

答案 1 :(得分:1)

您可以使用np.where执行此操作:

In[223]:
(df['b'],df['c']) = np.where(df['a'] > 5, (df['b'] + 5, df['c'] + 10), (df['b'],df['c']))
df

Out[223]: 
   a  b   c
0  7  7  15
1  3  4   7
2  6  6  13

这里我们将boolean条件作为第一个arg df['a'] > 5传递,当True它返回一个感兴趣的cols元组并添加了标量值时,False它返回原始值df,这里的技巧是构造不同操作的元组,这样我们就可以执行2个不同的操作并将它们分配给相同cols的元组

答案 2 :(得分:0)

你可以简单地使用这样的loc:

df.loc[df['a']>5,'b'] +=5
df.loc[df['a']>5,'c'] += 10