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

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

使用 Pandas 運(yùn)行引用多列的總計(jì)

使用 Pandas 運(yùn)行引用多列的總計(jì)

GCT1015 2023-07-27 16:08:58
我有一個問題(希望很簡單)。我正在嘗試使用 Pandas 在 Python 中創(chuàng)建運(yùn)行總計(jì)。假設(shè)我有一些工人,他們每天都會記錄他們的工作時間。我想知道每天報告的到目前為止他們工作的總小時數(shù)。假設(shè)我有一個 Pandas 數(shù)據(jù)框,有四列,如下所示(在日期之間添加水平空間以便于閱讀):  Day Worker HoursWorked HoursWorkedThusFar   1      1           0                  0   1      2           2                  0   1      3           4                  0   2      1           6                  0   2      2           8                  0   2      3          10                  0   3      1          12                  0   3      2          14                  0   3      3          16                  0我想填寫“HoursWorkedThusFar”欄。請注意,每個工人在一周開始時的工作時間為零。在非常粗略的偽代碼中,我想對 HoursWorkedThusFar 列執(zhí)行以下操作:For Day 2 onward:    For each worker:        Add up previous day's work, plus previous day's hours worked thus far因此,HoursWorkedThusFar 列應(yīng)填寫為:  Day Worker HoursWorked HoursWorkedThusFar   1      1           0                   0  (Initial Value)   1      2           2                   0  (Initial Value)   1      3           4                   0  (Initial Value)   2      1           6                   0  (0+0)   2      2           8                   2  (0+2)   2      3          10                   4  (0+4)   3      1          12                   6  (0+6)   3      2          14                   10 (2+8)   3      3          16                   14 (4+10)以下是生成該示例初始數(shù)據(jù)幀的代碼:import pandas as pddf = pd.DataFrame(columns=('Day', 'Worker', 'HoursWorked', 'HoursWorkedThusFar'))for i in range(3):   df.loc[i] = [1, i + 1, i*2, 0]for i in range(3,6):   df.loc[i] = [2, i - 2, i*2, 0]for i in range (6,9):   df.loc[i] = [3, i - 5, i*2, 0]print(df)非常感謝任何建議。
查看完整描述

2 回答

?
桃花長相依

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個贊

嘗試使用pd.Series.cumsum()生成運(yùn)行總計(jì)

#?Ordering?data?by?worker?and?converting?to?numeric?for?application?of?running?total
df["HoursWorked"]=df["HoursWorked"].astype(float)
df["HoursThusFar"]?=?df.groupby("Worker").cumsum()

分解它

我們創(chuàng)建df["HoursThusFar"]變量并執(zhí)行以下操作:

  1. 我們將其轉(zhuǎn)換["HoursWorked"]astype(float)

  2. 我們將數(shù)據(jù)框和groupby每個數(shù)據(jù)框稱為"Worker"

  3. 我們讓["HoursWorked"]序列準(zhǔn)備好計(jì)算運(yùn)行總和

  4. 我們調(diào)用cumsum()方法來獲取運(yùn)行總計(jì)


查看完整回答
反對 回復(fù) 2023-07-27
?
胡子哥哥

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個贊

我想這就是你要找的。不過,您需要首先將列轉(zhuǎn)換為數(shù)字類型。

df['HoursWorked'] = df['HoursWorked'].astype(float)


df['HoursWorkedThusFar'] = df.groupby('Worker')['HoursWorked'].transform(lambda x: x.cumsum().shift().fillna(0))



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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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