请考虑以下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)
我怎样才能实现这一目标?
答案 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