簡體   English   中英

將 dataframe 列值除以該列的總和

[英]Divide dataframe column value by the total of the column

我的問題對你們中的許多人來說可能太容易了,但因為我是 Python 的初學者。

我想獲得包含 3 個不同可能值(1,0,-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

假設你有這個 dataframe

df = pd.DataFrame({
    'col_name': [1,1,0,-1,-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)

Output 0.6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM