2017-08-24 67 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 
相关问题