第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

計(jì)算 groupby 結(jié)果中大于 0 的列的值

計(jì)算 groupby 結(jié)果中大于 0 的列的值

狐的傳說(shuō) 2023-08-08 15:06:57
我有一個(gè) groupby 數(shù)組,其中需要按 A 進(jìn)行分組,然后顯示由 B1 和 B2 分隔的 B 實(shí)例的計(jì)數(shù),最后顯示 > 0.1 的實(shí)例的百分比,因此我這樣做是為了獲得前 2 個(gè):    A   B       C   id                                      118 a1  B1      0119 a1  B1      0120 a1  B1      101.1   121 a1  B1      106.67  122 a1  B2      103.33  237 a1  B2      100 df = pd.DataFrame(df.groupby(    ['A', 'B'])['B'].aggregate('count')).unstack(level=1)我得到了第一部分的正確結(jié)果:                   BB                  B1   B2Aa1                  4   2a2                  7   9a3                  9   17a4                  8   8a5                  7   8但是當(dāng)我需要獲得 > 0 的計(jì)數(shù)百分比時(shí)prcnt_complete = df[['A', 'B', 'C']]prcnt_complete['passed'] = prcnt_complete['C'].apply(lambda x: (float(x) > 1))prcnt_complete = prcnt_complete.groupby(['A', 'B', 'passed']).count()我得到一些毫無(wú)意義的奇怪值,有時(shí) True 和 False 之間的總和甚至不相加。我試圖按順序理解我做錯(cuò)的事情,以便我能夠理解它。我正在尋找的結(jié)果是這樣的:                   B         passedB                  B1   B2   B1   B2Aa1                  4   2    2    2a2                  7   9    7    6a3                  9   17   9    5
查看完整描述

2 回答

?
飲歌長(zhǎng)嘯

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊

你可以做:


(df['C'].gt(1).groupby([df['A'],df['B']])

    .agg(['size','sum'])

    .rename(columns={'size':'B','sum':'passed'})

    .unstack('B')

)

輸出(來(lái)自樣本數(shù)據(jù)):


       B    passed   

B  B1 B2     B1 B2

A                 

a1  4  2      2  2


查看完整回答
反對(duì) 回復(fù) 2023-08-08
?
慕姐8265434

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊

在解決你的問(wèn)題時(shí),我還想看看是否可以獲得 B 的平均百分比(同時(shí)忽略 0)。我在獲得計(jì)數(shù)的同時(shí)也能夠完成此任務(wù)。


本練習(xí)的數(shù)據(jù)框:


     A   B       C

0   a1  B1    0.00

1   a1  B1    0.00

2   a1  B1   98.87

3   a1  B1  101.10

4   a1  B2  106.67

5   a1  B2  103.00

6   a2  B1    0.00

7   a2  B1    0.00

8   a2  B1   33.00

9   a2  B1  100.00

10  a2  B2   80.00

11  a3  B1   90.00

12  a3  B2   99.00

排除零的情況下求平均值


為此我必須.replace(0, np.nan)在 groupby 函數(shù)之前添加。


A = ['a1','a1','a1','a1','a1','a1','a2','a2','a2','a2','a2','a3','a3']

B = ['B1','B1','B1','B1','B2','B2','B1','B1','B1','B1','B2','B1','B2']

C = [0,0,98.87,101.1,106.67,103,0,0,33,100,80,90,99]

import pandas as pd

import numpy as np

df = pd.DataFrame({'A':A,'B':B,'C':C})


df = pd.DataFrame(df.replace(0, np.nan)

                    .groupby(['A', 'B'])

                    .agg({'B':'size','C':['count','mean']})

                    .rename(columns={'size':'Count','count':'Passed','mean':'Avg Score'})).unstack(level=1)

df.columns = df.columns.droplevel(0)


   Count    Passed    Avg Score         

B     B1 B2     B1 B2        B1       B2

A                                       

a1     4  2      2  2    99.985  104.835

a2     4  1      2  1    66.500   80.000

a3     1  1      1  1    90.000   99.000


查看完整回答
反對(duì) 回復(fù) 2023-08-08
  • 2 回答
  • 0 關(guān)注
  • 228 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)