假設我搜索這樣的數據框df[df['a'] > 5]
,然後我想分別將5和10添加到搜索結果的列b
和c
。熊貓:搜索並將值添加到多列單元
例如,
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
所以,我怎麼能做到這一點?
假設我搜索這樣的數據框df[df['a'] > 5]
,然後我想分別將5和10添加到搜索結果的列b
和c
。熊貓:搜索並將值添加到多列單元
例如,
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
所以,我怎麼能做到這一點?
一個班輪,將這樣的伎倆:
df.loc[df.a > 5, ['b', 'c']] += (5, 10)
可以使用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的元組
您可以簡單地使用LOC這樣的:
df.loc[df['a']>5,'b'] +=5
df.loc[df['a']>5,'c'] += 10
很不錯的解決方案! +1 :) – MaxU