答案 0 :(得分:9)
您可以将一个数据帧除以另一个数据帧,并且pandas将自动对齐索引和列,然后分割适当的值。 EG df1 / df2
如果按系列划分数据框,pandas会自动将系列索引与数据框的列对齐。也许您希望将系列的索引与数据帧的索引对齐。如果是这种情况,那么您将不得不使用div
方法。
所以而不是:
df / s
您使用
df.div(s, axis=0)
其中将s
的索引与df
的索引对齐,然后在通过其他维度进行广播时执行除法,在本例中为列。
答案 1 :(得分:1)
在上面的示例中,它实际上是在通过生成(pclass_xt.sum(0))的数组/系列在轴0上潜水pclass_xt。在(pclass_xt.sum(0))中,.sum沿轴= 1求和,这将为您提供所有pclass中存活和未存活的总数。然后,.div只是沿0轴潜水整个数据帧,并生成总和,即将一行除以该行的总和。
希望有帮助!
答案 2 :(得分:0)
import pandas as pd,numpy as np
data={"A":np.arange(10),"B":np.random.randint(1,10,10),"C":np.random.random(10)}
#print(data)
df2=pd.DataFrame(data=data)
print("DataFrame values:\n",df2)
s1=pd.Series(np.arange(1,11))
print("s1 series values:\n",s1)
print("Result of Division:\n",df2.div(s1,axis=0))
**#So here, How the div is working as mention below:-
#df Row1/s1 Row1 -0/1 4/1 0.305/1
#df Row2/s1 Row2 -1/2 9/2 0.821/2**
#################Output###########################
DataFrame values:
A B C
0 0 2 0.265396
1 1 2 0.055646
2 2 7 0.963006
3 3 9 0.958677
4 4 6 0.256558
5 5 6 0.859066
6 6 8 0.818831
7 7 4 0.656055
8 8 6 0.885797
9 9 4 0.412497
s1 series values:
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
dtype: int64
Result of Division:
A B C
0 0.000000 2.000000 0.265396
1 0.500000 1.000000 0.027823
2 0.666667 2.333333 0.321002
3 0.750000 2.250000 0.239669
4 0.800000 1.200000 0.051312
5 0.833333 1.000000 0.143178
6 0.857143 1.142857 0.116976
7 0.875000 0.500000 0.082007
8 0.888889 0.666667 0.098422
9 0.900000 0.400000 0.041250