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

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

基于另一列的計(jì)算創(chuàng)建一列

基于另一列的計(jì)算創(chuàng)建一列

繁花不似錦 2022-10-25 10:59:49
我想根據(jù)前一周的銷售額創(chuàng)建另一個(gè)列。這是示例輸入:df = pd.DataFrame({'Week':[1,1,2,2,3,3,4,4,5,5,1,1,2,2,3,3,4,4,5,5],                   'Category':['Red','White','Red','White','Red','White','Red','White','Red','White','Red','White','Red','White','Red','White','Red','White','Red','White'],                   'id':[1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2],                   'Sales':[100,200,300,400,100,200,300,400,100,200,100,200,300,400,100,200,300,400,100,200],                  'Sales_others':[10,20,30,40,10,20,30,40,10,20,10,20,30,40,10,20,30,40,10,20]})print(df)基于此,我想創(chuàng)建另一個(gè)列,它只不過是前一周的銷售額。這是所需輸出的示例    df_output = pd.DataFrame({'Week':[1,1,2,2,3,3,4,4,5,5,1,1,2,2,3,3,4,4,5,5],                       'Category':['Red','White','Red','White','Red','White','Red','White','Red','White','Red','White','Red','White','Red','White','Red','White','Red','White'],                       'id':[1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2],                       'Sales':[100,200,300,400,100,200,300,400,100,200,100,200,300,400,100,200,300,400,100,200],                      'Sales_others':[10,20,30,40,10,20,30,40,10,20,10,20,30,40,10,20,30,40,10,20],                      'Sales_previous_week':[0,0,100,200,300,400,100,200,300,400,0,0,100,200,300,400,100,200,300,400]})print(df_output)我發(fā)現(xiàn)很難創(chuàng)建一個(gè)自我加入的東西。前一周應(yīng)該只受銷售文件的影響,我應(yīng)該能夠保留“sales_others”列--Edit 添加原始代碼CR_UK_NL_Weeklevel['PREVIOUS_WEEK'] = CR_UK_NL_Weeklevel.groupby(['RETAIL_SITE_ID','CATEGORY_NAME'])['CURRENT_WEEK'].shift(fill_value=0)print(CR_UK_NL_Weeklevel)重命名列CR_UK_NL_Weeklevel.columns.values[4] = 'CURRENT_WEEK'CR_UK_NL_Weeklevel.columns.values[3] = 'LAST_YEAR_WEEK'CR_UK_NL_Weeklevel.columns.values嘗試實(shí)施解決方案:CR_UK_NL_Weeklevel['PREVIOUS_WEEK'] = CR_UK_NL_Weeklevel.groupby(['RETAIL_SITE_ID','CATEGORY_NAME'])['CURRENT_WEEK'].shift(fill_value=0)print(CR_UK_NL_Weeklevel)[78]:CR_UK_NL_Weeklevel['PREVIOUS_WEEK'] = CR_UK_NL_Weeklevel.groupby(['RETAIL_SITE_ID','CATEGORY_NAME'])['CURRENT_WEEK'].shift(fill_value=0)print(CR_UK_NL_Weeklevel)
查看完整描述

1 回答

?
牧羊人nacy

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

如果每周總是有相同的類別并且連續(xù)幾周使用按列DataFrameGroupBy.shift分組:Category

df['Sales_PREVIOUS'] = df.groupby('Category')['Sales'].shift(fill_value=0)

print (df)

   Week Category  Sales  Sales_PREVIOUS

0     1      Red    100               0

1     1    White    200               0

2     2      Red    300             100

3     2    White    400             200

4     3      Red    100             300

5     3    White    200             400

6     4      Red    300             100

7     4    White    400             200

8     5      Red    100             300

9     5    White    200             400

旋轉(zhuǎn)的另一個(gè)想法是 use DataFrame.pivot,然后DataFrame.shift使用DataFrame.stackforSeries和 last add new column by DataFrame.join


s = df.pivot('Week','Category','Sales').shift(fill_value=0).stack()

df = df.join(s.rename('Sales_PREVIOUS WEEK'), on=['Week','Category'])

編輯:


使用新數(shù)據(jù)添加列id:


df['Sales_PREVIOUS'] = df.groupby(['id','Category'])['Sales'].shift(fill_value=0)

對于第二種解決方案:


s = df.set_index(['Week','id','Category'])['Sales'].unstack([1,2]).shift(fill_value=0).unstack()

df = df.join(s.rename('Sales_PREVIOUS WEEK'), on=['id','Category','Week'])

print (df)

    Week Category  id  Sales  Sales_others  Sales_PREVIOUS WEEK

0      1      Red   1    100            10                    0

1      1    White   1    200            20                    0

2      2      Red   1    300            30                  100

3      2    White   1    400            40                  200

4      3      Red   1    100            10                  300

5      3    White   1    200            20                  400

6      4      Red   1    300            30                  100

7      4    White   1    400            40                  200

8      5      Red   1    100            10                  300

9      5    White   1    200            20                  400

10     1      Red   2    100            10                    0

11     1    White   2    200            20                    0

12     2      Red   2    300            30                  100

13     2    White   2    400            40                  200

14     3      Red   2    100            10                  300

15     3    White   2    200            20                  400

16     4      Red   2    300            30                  100

17     4    White   2    400            40                  200

18     5      Red   2    100            10                  300

19     5    White   2    200            20                  400

編輯:


問題在于列名,請使用:


cols = CR_UK_NL_Weeklevel.columns.tolist()

cols[4] = 'CURRENT_WEEK'

cols[3] = 'LAST_YEAR_WEEK'

CR_UK_NL_Weeklevel.columns = cols


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

添加回答

舉報(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)