DataFrame元素逐行除以行总和 [英] DataFrame element-wise divide by sum of row inplace
本文介绍了DataFrame元素逐行除以行总和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望每个元素都被行总和除,下面的代码总是出错.
I want every element divided by sum of row inplace,code below always go wrong.
熊猫新手,谢谢!
df = pd.DataFrame(np.random.rand(12).reshape(3,4),columns=list('abcd'))
df_row_sum = df.apply(lambda x: x.mean(),axis=1)
df / df_row_sum
推荐答案
I think you need sum
or maybe mean
per rows (axis=1
) with division by DataFrame.div
:
np.random.seed(123)
df = pd.DataFrame(np.random.randint(10, size=12).reshape(3,4),columns=list('abcd'))
print (df)
a b c d
0 2 2 6 1
1 3 9 6 1
2 0 1 9 0
print (df.sum(axis=1))
0 11
1 19
2 10
dtype: int64
print (df.div(df.sum(axis=1), axis=0))
a b c d
0 0.181818 0.181818 0.545455 0.090909
1 0.157895 0.473684 0.315789 0.052632
2 0.000000 0.100000 0.900000 0.000000
print (df.mean(axis=1))
0 2.75
1 4.75
2 2.50
dtype: float64
print (df.div(df.mean(axis=1), axis=0))
a b c d
0 0.727273 0.727273 2.181818 0.363636
1 0.631579 1.894737 1.263158 0.210526
2 0.000000 0.400000 3.600000 0.000000
这篇关于DataFrame元素逐行除以行总和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文