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

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

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

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

達(dá)令說 2022-01-11 17:07:37
我有一個大數(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,因為 B 公司在樣本期之間存在缺失值,但 B 公司和 C 公司在樣本期結(jié)束時再次提供銷售價值。上面的代碼工作正常,可以滿足我的需要。但是,我的數(shù)據(jù)集非常大。上面的代碼需要一段時間才能運行。我嘗試使用: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: __問題:上面代碼的輸出是__;我想知道為什么會這樣。據(jù)我了解,apply() 函數(shù)將每個組作為一個子數(shù)據(jù)集,我的函數(shù)可以對每個子數(shù)據(jù)集進(jìn)行一些操作。我有什么誤解嗎?如果我想使用定義的函數(shù),如何將定義的函數(shù)更改為使用 apply() 函數(shù)?有沒有更有效的方法來做到這一點?快速分類:我處理的問題比我描述的情況復(fù)雜得多。我的觀點是為什么我不能在 groupby().apply() 函數(shù)中使用上面定義的函數(shù)?太感謝了!
查看完整描述

1 回答

?
慕蓋茨4494581

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

我知道如何解決這個問題。


我定義的函數(shù)應(yīng)該返回一個新的數(shù)據(jù)框,因為我按組聚合數(shù)據(jù)并且在這種情況下需要一個新的數(shù)據(jù)框。


如果我不放回報,熊貓只會做聚合,因此你的輸出將是'__'


*** 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)


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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