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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

創(chuàng)建每組百分比的數(shù)據(jù)框

創(chuàng)建每組百分比的數(shù)據(jù)框

慕工程0101907 2022-05-19 18:42:41
我有以下數(shù)據(jù)框,′data = {'ID':[279, 224, 221, 329, 333],    'GROUP':['BLACK', 'BLACK', 'BLUE', 'GREEN','BLACK'],    'ITEM_1':['Delhi', 'Kanpur', 'Delhi', 'Kannauj', 'Delhi'],    'ITEM_2':['Msc', 'Kanpur', 'Kanpur', 'Phd', 'Kanpur']}′′df = pd.DataFrame(data)′′df = df.set_index('ID')′ ID  Group    Item_1   Item_2279    A      Delhi    Msc224    A      Kanpur   Kanpur        221    B      Delhi    Kanpur    329    C      Kannauj  Phd333    A      Delhi    Kanpur如何創(chuàng)建以下數(shù)據(jù)框,行等于不同的項目和列與組,即            Delhi      KANPUR       Kannauj    Msc      Phd                     A         2/6%       3/6%         0%       1/6%      0%   B         1/2%       1/2%         0%        0%       0%   C           0%         0%       1/2%        0%     1/2%我的意思是,構(gòu)建一個相對于每組總數(shù)的百分比數(shù)據(jù)框。任何想法將不勝感激。我雖然使用 groupby(['GROUP']) 和 .apply(lambda r: r/r.sum(), axis=1),但這不是我需要這個數(shù)據(jù)框的方式
查看完整描述

1 回答

?
慕仙森

TA貢獻1827條經(jīng)驗 獲得超8個贊

首先合并這些列單列:


all_items = pd.concat([df.ITEM_1, df.ITEM_2])

all_items

Out[8]: 

ID

279      Delhi

224     Kanpur

221      Delhi

329    Kannauj

333      Delhi

279        Msc

224     Kanpur

221     Kanpur

329        Phd

333     Kanpur

dtype: object

然后,將其合并回 df:


temp_df = pd.concat([df[["GROUP"]].copy(), df[["GROUP"]].copy()])

temp_df["ITEM"] = all_items

temp_df.reset_index(inplace=True)

temp_df["temp_col"] = 1

temp_df

Out[15]: 

    ID  GROUP     ITEM  temp_col

0  279  BLACK    Delhi         1

1  224  BLACK   Kanpur         1

2  221   BLUE    Delhi         1

3  329  GREEN  Kannauj         1

4  333  BLACK    Delhi         1

5  279  BLACK      Msc         1

6  224  BLACK   Kanpur         1

7  221   BLUE   Kanpur         1

8  329  GREEN      Phd         1

9  333  BLACK   Kanpur         1

最后轉(zhuǎn)一下,


my_pivot = temp_df.pivot_table(values="temp_col", index="GROUP", columns="ITEM", aggfunc=np.sum, fill_value=0)

my_pivot = my_pivot / len(df)

# my_pivot / len (df) # <-- changing this to

to_div = my_pivot.aggregate(np.sum, axis=1) # <-- this and

my_pivot = my_pivot.div(to_div, axis=0) # <-- this

Out[31]: 

    ITEM      Delhi  Kannauj  Kanpur       Msc  Phd

GROUP                                          

BLACK  0.333333      0.0     0.5  0.166667  0.0

BLUE   0.500000      0.0     0.5  0.000000  0.0

GREEN  0.000000      0.5     0.0  0.000000  0.5

完畢。


查看完整回答
反對 回復(fù) 2022-05-19
  • 1 回答
  • 0 關(guān)注
  • 92 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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