将数据框列值除以列的总数

问题描述

我的问题对你们中的许多人来说可能太简单了,但因为我是 Python 的初学者..

我想要包含 3 个不同可能值 (1,-1) 的列的值百分比,但排除列中的一个值(即 -1)。

我这样做了:(df['col_name']).sum()/len(df.col_name)

然而,它也计算了 -1,而我只想拥有值 1/总和的百分比,但总和中没有 -1。

感谢您的帮助。

解决方法

对于排除值,将 -1 替换为缺失值:

df['col_name'].replace(-1,np.nan).sum()/len(df.col_name) 

如果需要计算过滤系列的长度,或者过滤掉 -1 值:

np.random.seed(123)
df = pd.DataFrame({'col_name':np.random.choice([0,1,-1],size=10)})

print (df)
   col_name
0        -1
1         1
2        -1
3        -1
4         0
5        -1
6        -1
7         1
8        -1
9         1

s = df.loc[df['col_name'] != -1,'col_name']
print (s)
1    1
4    0
7    1
9    1
Name: col_name,dtype: int32

print (s.sum()/len(s))
0.75

print (s.mean())
0.75
,

假设你有这个数据框

df = pd.DataFrame({
    'col_name': [1,-1,0]
    })

    col_name
0   1
1   1
2   0
3   -1
4   -1
5   1
6   0

您想计算 1 的数量除以没有 -1 的总数,即 5 分之 3,对吗?

numerator = sum(df['col_name'].apply(lambda x: 1 if x==1 else 0))
denominator = sum(df['col_name'].apply(lambda x: 0 if x==-1 else 1))
print(numerator/denominator)

输出0.6