慕無忌1623718
2023-12-12 15:16:56
我有一個文件 df,我希望獲取每 7 天時間段的增量并反映該特定時間段的時間戳df:Date Value10/15/2020 7510/14/2020 7010/13/2020 6510/12/2020 6010/11/2020 5510/10/2020 5010/9/2020 4510/8/2020 4010/7/2020 3510/6/2020 3010/5/2020 2510/4/2020 2010/3/2020 1510/2/2020 1010/1/2020 5期望的輸出:10/15/2020 到 10/9/2020 是 7 天,增量為:75 - 45 = 30 10/9/2020 時間戳為:30 等等Date Value10/9/2020 3010/2/2020 30這就是我正在做的:df= df['Delta']=df.iloc[:,6].sub(df.iloc[:,0]),Date=pd.Series(pd.date_range(pd.Timestamp('2020-10- 15'), periods=7, freq='7d')))[['Delta','Date']]我也在想我也許可以做到這一點:編輯我將 callDate 更新為 Datefor row in df.itertuples(): Date = datetime.strptime(row.Date, "%m/%d/%y %I:%M %p") previousRecord = df['Date'].shift(-6).strptime(row.Date, "%m/%d/%y %I:%M %p") Delta = Date - previousRecord任何建議表示贊賞
2 回答

慕桂英546537
TA貢獻(xiàn)1848條經(jīng)驗 獲得超10個贊
不要迭代數(shù)據(jù)框。您可以使用merge:
(df.merge(df.assign(Date=df['Date'] - pd.to_timedelta('6D')),
on='Date')
.assign(Value = lambda x: x['Value_y']-x['Value_x'])
[['Date','Value']]
)
輸出:
Date Value
0 2020-10-09 30
1 2020-10-08 30
2 2020-10-07 30
3 2020-10-06 30
4 2020-10-05 30
5 2020-10-04 30
6 2020-10-03 30
7 2020-10-02 30
8 2020-10-01 30

慕碼人8056858
TA貢獻(xiàn)1803條經(jīng)驗 獲得超6個贊
你寫的最后一段代碼就是我的做法。唯一的問題是Delta = Date - previousRecord
,這里沒有任何東西被調(diào)用Date
。您應(yīng)該訪問與 關(guān)聯(lián)的值callDate
。
添加回答
舉報
0/150
提交
取消