如何在单个实例

时间:2016-12-14 22:35:29

标签: python pandas numpy dataframe

请考虑以下pandas DataFrame

df = pd.DataFrame(np.random.randint(1,10,15).reshape(-1,3), columns = list('abc'))

我想在一个实例中更新所有三列的值作为比例(即列值除以所有三列的总和,轴= 1)。

类似的东西:

df = df.loc[:,['a','b','c']] / df.loc[:,['a','b','c']].sum(axis = 1)

我怎样才能实现这一目标?

1 个答案:

答案 0 :(得分:3)

您可以使用pandas.DataFrame.div方法:

df.div(df.sum())

#          a           b           c
#0  0.071429    0.368421    0.173913
#1  0.214286    0.210526    0.391304
#2  0.214286    0.052632    0.043478
#3  0.285714    0.105263    0.130435
#4  0.214286    0.263158    0.260870

要按行划分,请相应地指定轴:

df1 = df.div(df.sum(axis = 1), axis = 0)

这是一个测试,结果数据框的rowum为1。

df1.sum(axis = 1)

#0    1.0
#1    1.0
#2    1.0
#3    1.0
#4    1.0
#dtype: float64