最佳答案
表示每列除以该列的最后一个值(All
行的值),转换为float
。
您可以通过以下方式检查:
def percConvert(ser):
print (ser)
print (ser[-1])
return ser / float(ser[-1])
但是可以使用crosstab
中的参数normalize=0
来简化解决方案(只有 1 的列被删除):
df1 = pd.crosstab(data['Credit_History'],data['Loan_Status'], margins=True, normalize=0)
示例:
np.random.seed(123)
N = 100
data = pd.DataFrame({'Loan_Status': np.random.choice(['Y','N'], N),
'Credit_History':np.random.choice([0., 1.], N)})
#print (data)
def percConvert(ser):
return ser / float(ser[-1])
df1 = pd.crosstab(data['Credit_History'],data['Loan_Status'], margins=True, normalize=0)
print (df1)
Loan_Status N Y
Credit_History
0.0 0.489362 0.510638
1.0 0.415094 0.584906
All 0.450000 0.550000
df1 = pd.crosstab(data['Credit_History'],data['Loan_Status'], margins=True)
.apply(percConvert, axis=1)
print (df1)
Loan_Status N Y All
Credit_History
0.0 0.489362 0.510638 1.0
1.0 0.415094 0.584906 1.0
All 0.450000 0.550000 1.0
关于python - Panda 数据框中的百分比转换函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44051822/