我在下面有一个数据框,其中包含每家商店的肉类、蔬菜和面包的销售额。我想把值转换成%,比如Store N的值会变成74%、7%和19%。换句话说,74%是肉类销售额占N店总销售额的百分比。最简单的做法是什么?
import pandas as pd
df=pd.DataFrame({'Store':['N','S','E','W']
,'Meat':[200,250,100,400]
,'Veg':[20,100,30,80]
,'Bread':[50,230,150,100]})
df=df[['Store','Meat','Veg','Bread']]
请您参考如下方法:
不使用循环的纯 pandas 解决方案是:
df.ix[:, 1:] = (df.ix[:, 1:].T / df.ix[:, 1:].sum(1)).T
print(df)
结果:
Store Meat Veg Bread
0 N 0.740741 0.074074 0.185185
1 S 0.431034 0.172414 0.396552
2 E 0.357143 0.107143 0.535714
3 W 0.689655 0.137931 0.172414
