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

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

Python:對于每一行,獲取值> 0的下一個(gè)較早日期

Python:對于每一行,獲取值> 0的下一個(gè)較早日期

Cats萌萌 2022-12-20 11:30:44
嘗試獲取值 > 0 的當(dāng)前或過去日期。將使用它來計(jì)算自值 > 0 以來的天數(shù)。如果日期具有值,則它將為 0 天。示例數(shù)據(jù)和所需結(jié)果如下所示。數(shù)據(jù)是“日期”和“值”列,結(jié)果是最后兩列。date        value   'date value > 0'    'days since value > 0'2020-04-30  0       2020-04-28           22020-04-29  0       2020-04-28           12020-04-28  1       2020-04-28           0 2020-03-31  6       2020-03-31           02020-03-30  1       2020-03-30           02020-03-29  3       2020-03-29           02020-02-29  0       2020-01-29           312020-01-31  0       2020-01-29           22020-01-30  0       2020-01-29           12020-01-29  1       2020-01-29           0數(shù)據(jù)格式可以是字典或數(shù)據(jù)框。我正在從 csv 導(dǎo)入并將導(dǎo)出回 csv。邏輯:對于每一行,過濾到僅日期 <= 當(dāng)前行日期的記錄,然后獲取值 > 0 的過濾數(shù)據(jù)框的最大日期。最大日期是“日期值 > 0”。編輯:我一直在嘗試按順序迭代數(shù)據(jù)幀記錄,例如pandas df.shift(), df.rolling(),df.iloc但堅(jiān)持如何“回顧”以獲取值 > 0 的先前記錄的日期。
查看完整描述

1 回答

?
qq_花開花謝_0

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

假設(shè)您有一個(gè)類型data為“日期”列和datetime64類型為“值”列的數(shù)據(jù)框int64:


>>> data

        date  value

0 2020-04-30      0

1 2020-04-29      0

2 2020-04-28      1

3 2020-03-31      6

4 2020-03-30      1

5 2020-03-29      3

6 2020-02-29      0

7 2020-01-31      0

8 2020-01-30      0

9 2020-01-29      1

>>> data.dtypes

date     datetime64[ns]

value             int64

dtype: object

然后你可以按日期的升序?qū)?shù)據(jù)幀進(jìn)行排序,然后創(chuàng)建一個(gè)新列“prevdate”來復(fù)制“date”列但設(shè)置為NaT值為 0 的行,如下所示:


data['prevdate'] = data['date'].where(data['value'].ne(0))

然后向前填充NaT值:


>>> data.sort_values('date', inplace=True)

>>> data['prevdate'] = data['date'].where(data['value'].ne(0)).fillna(method='ffill')

>>> data

        date  value   prevdate

9 2020-01-29      1 2020-01-29

8 2020-01-30      0 2020-01-29

7 2020-01-31      0 2020-01-29

6 2020-02-29      0 2020-01-29

5 2020-03-29      3 2020-03-29

4 2020-03-30      1 2020-03-30

3 2020-03-31      6 2020-03-31

2 2020-04-28      1 2020-04-28

1 2020-04-29      0 2020-04-28

0 2020-04-30      0 2020-04-28

現(xiàn)在您可以簡單地在兩個(gè)日期列之間進(jìn)行減法并將差值轉(zhuǎn)換為整數(shù):


>>> data['days'] = (data['date'] - data['prevdate']).apply(lambda x: x.days)

>>> data

        date  value   prevdate  days

9 2020-01-29      1 2020-01-29     0

8 2020-01-30      0 2020-01-29     1

7 2020-01-31      0 2020-01-29     2

6 2020-02-29      0 2020-01-29    31

5 2020-03-29      3 2020-03-29     0

4 2020-03-30      1 2020-03-30     0

3 2020-03-31      6 2020-03-31     0

2 2020-04-28      1 2020-04-28     0

1 2020-04-29      0 2020-04-28     1

0 2020-04-30      0 2020-04-28     2


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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