DataFrame以元素方式除以行的总和

F.b*_*bob 7 python pandas

我希望每个元素除以行的总和,下面的代码总是出错.

熊猫新手,谢谢!

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
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 11

我认为你需要sum或者mean每行(axis=1)分区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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)