2017-08-24 68 views
1

比方說,我有一個數據幀,看起來像這樣:如何乘以DataFrame中的所有列值而不是基於位置的列?

Bank Name Entity  Weekly Cost 
JPM   Algo  30 
Chase  Equities 500 

我還想寫,說的功能,

If the cost under JPM is < 100, then multiply the full column Cost by 10. 

所以基本上,我想找到根據Bank Name一個Cost ,如果該成本低於某個閾值,那麼我們將重新格式化Cost列和Cost列的多個ALL值10,這意味着Cost = Cost*10

我該怎麼做這樣的事情?

+0

如果什麼有一個附加行,其中的費用是150 JPM?你還想把列乘以10嗎? – Alexander

回答

2

你需要檢查與all()減少操作

In [1627]: if (df.loc[df['Bank Name'] == 'JPM', 'Weekly Cost'] < 100).all(): 
     ...:  df['Weekly Cost'] *= 10 

或者item()

In [1627]: if (df.loc[df['Bank Name'] == 'JPM', 'Weekly Cost'] < 100).item(): 
     ...:  df['Weekly Cost'] *= 10 
0
df['Weekly Cost'] *= 10 ** (df.set_index('Bank Name').at['JPM', 'Weekly Cost'] < 100) 

df 

    Bank Name Entity Weekly Cost 
0  JPM  Algo   300 
1  Chase Equities   5000 
相關問題