我有这个函数的问题,它必须返回一列中每个特征的比例。
以下是一些很容易编造的数据:
df2 = pd.DataFrame({'X': ['A', 'A', 'B' , 'C'], 'Y': [1, 0, 0 , 1], 'Z': [1, 0, 1 , 1]})
df2['X'].value_counts()
当我计算我得到的值时
A 2
B 1
C 1
现在,我需要获取“X”每个值的比例
for freq in df2['X'].value_counts():
#print(freq)
print(freq/df2['X'].value_counts().sum())
结果如下:
0.5
0.25
0.25
完善
现在我必须应用于我的数据帧并获取新列。功能下方:
def get_proportion(df):
for freq in df2['X'].value_counts():
return (freq/df2['X'].value_counts().sum())
df2["A"]=df2.apply(get_proportion, axis=1)
结果:
X Y Z A
0 A 1 1 0.5
1 A 0 0 0.5
2 B 0 1 0.5
3 C 1 1 0.5
我应该得到
X Y Z A
0 A 1 1 0.5
1 A 0 0 0.5
2 B 0 1 0.25
3 C 1 1 0.25
怎么了?
如果设置返回循环下,我得到缩进错误
def get_proportion(df):
for freq in df['X'].value_counts():
return freq/df['X'].value_counts().sum()
缩进错误:预期缩进块
如果我设置了一个参数
df2["A"]=df2.apply(get_proportion(df2), axis=1)
我收到错误
TypeError: 'numpy.float64' object is not callable
如果你能帮忙,谢谢你。
catspeake
手掌心
相关分类