2017-08-25 67 views
3

假設我搜索這樣的數據框df[df['a'] > 5],然後我想分別將5和10添加到搜索結果的列bc熊貓:搜索並將值添加到多列單元

例如,

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

現在我想5和10添加到細胞其中a> 5,結果應該是這樣的

a b c 
7 7 15 
3 4 7 
6 6 13 

所以,我怎麼能做到這一點?

回答

5

一個班輪,將這樣的伎倆:

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

很不錯的解決方案! +1 :) – MaxU

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 

下面我們通過布爾條件作爲第一個參數df['a'] > 5,當True返回與標值取代感興趣的cols的元組加入,當False它返回原來的DF,這裏的關鍵是要建立不同操作的元組,所以我們可以進行2個不同的操作並將它們分配給相同的cols的元組

0

您可以簡單地使用LOC這樣的:

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