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

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

使用 groupby().apply() 而不是在整個(gè)數(shù)據(jù)集上運(yùn)行循環(huán)?

使用 groupby().apply() 而不是在整個(gè)數(shù)據(jù)集上運(yùn)行循環(huán)?

達(dá)令說 2022-01-11 17:07:37
我有一個(gè)大數(shù)據(jù)集,如下所示:Year         Company              Sales          Dummy          1993            A                  100             1  1994            A                  50              1 1995            A                  50              1  1996            A                  NaN             01997            A                  NaN             01998            A                  NaN             01993            B                  100             1  1994            B                  50              1 1995            B                  50              1  1996            B                  NaN             01997            B                  NaN             01998            B                  100             1預(yù)期的輸出如下:Year         Company              Sales          Dummy       1993            A                  100             1            1994            A                  50              1            1995            A                  50              1            1996            A                  NaN             0            1997            A                  NaN             0            1998            A                  NaN             0              我想在 B 公司和 C 公司等公司的虛擬列中填寫 1,因?yàn)?B 公司在樣本期之間存在缺失值,但 B 公司和 C 公司在樣本期結(jié)束時(shí)再次提供銷售價(jià)值。上面的代碼工作正常,可以滿足我的需要。但是,我的數(shù)據(jù)集非常大。上面的代碼需要一段時(shí)間才能運(yùn)行。我嘗試使用:df.groupby('Company',as_index=False).apply(Newdummygenerator)或者df.groupby('Company',as_index=False).apply(lambda x: Newdummygenerator(x))上面的代碼不起作用。并且df.groupby('Company',as_index=False).apply(lambda x: Newdummygenerator(x))Output: __問題:上面代碼的輸出是__;我想知道為什么會(huì)這樣。據(jù)我了解,apply() 函數(shù)將每個(gè)組作為一個(gè)子數(shù)據(jù)集,我的函數(shù)可以對(duì)每個(gè)子數(shù)據(jù)集進(jìn)行一些操作。我有什么誤解嗎?如果我想使用定義的函數(shù),如何將定義的函數(shù)更改為使用 apply() 函數(shù)?有沒有更有效的方法來做到這一點(diǎn)?快速分類:我處理的問題比我描述的情況復(fù)雜得多。我的觀點(diǎn)是為什么我不能在 groupby().apply() 函數(shù)中使用上面定義的函數(shù)?太感謝了!
查看完整描述

1 回答

?
慕蓋茨4494581

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

我知道如何解決這個(gè)問題。


我定義的函數(shù)應(yīng)該返回一個(gè)新的數(shù)據(jù)框,因?yàn)槲野唇M聚合數(shù)據(jù)并且在這種情況下需要一個(gè)新的數(shù)據(jù)框。


如果我不放回報(bào),熊貓只會(huì)做聚合,因此你的輸出將是'__'


*** Create Dummy variables        

    df['Dummy']=np.where(df.Sales.notnull(),1,0)       


*** Def a function 

    def Newdummygenerator(x):

        for i in range(len(x)):

             if x.iloc[i,x.columns.get_loc('Dummy')]==1:

                x.iloc[i,x.columns.get_loc('Dummy')]=1

             elif x.iloc[i,x.columns.get_loc('Dummy')]==0 and\ sum(x.Dummy[i:])>=1 and sum(x.Dummy[0:i])>=1:

                x.iloc[i,x.columns.get_loc('Dummy')]=1

             else: 

                x.iloc[i,x.columns.get_loc('Dummy')]=0

        return x 

上面定義的函數(shù)可以插入到 apply() 函數(shù)中


df.groupby().apply(Newdummygenerator)


查看完整回答
反對(duì) 回復(fù) 2022-01-11
  • 1 回答
  • 0 關(guān)注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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