Python delta用于7天差异
我有一个数据帧df,我想计算7天时间段内的增量:Python delta用于7天差异,python,pandas,numpy,Python,Pandas,Numpy,我有一个数据帧df,我想计算7天时间段内的增量: Monday Tuesday Wednesday Thursday Friday Sat Sun 5 10 15 20 25 30 35 1 2 3 4 5 6 7 我想找到第一排的三角形,从星期一(5)开始,到星
Monday Tuesday Wednesday Thursday Friday Sat Sun
5 10 15 20 25 30 35
1 2 3 4 5 6 7
我想找到第一排的三角形,从星期一(5)开始,到星期日(35)结束
前7天时间段的增量为:35-5=30
接下来的7天窗口增量为:7-1=6,依此类推
该日期将于2020年1月1日开始,并以7天或每周为增量持续。
所需输出:(具有新创建的日期和增量列的新数据框)
这就是我正在做的:
import pandas as pd
import numpy as np
df = pd.read_csv('df.csv')
df['Delta'] = df['Sunday'] - df['Monday]
df['Date'] = pd.date_range(start='1/1/2020', periods=len(df), freq='Weeks')
df2.to_csv('df2.csv')
如有任何建议,我们将不胜感激
# necessary imports
import datetime
import pandas
可以做:
numdays=5
base = datetime.datetime(2020,1,1)
date_list = [base + datetime.timedelta(days=7*x) for x in range(numdays)]
然后:
如果您有另一个值列表,即要包含在此数据框中的增量列表:
Deltas_list=[0,1,2,3,4]
Deltas=pd.Series(Deltas_list)
df['Delta']=Deltas
df将是:
Date Delta
0 2020-01-01 0
1 2020-01-08 1
2 2020-01-15 2
3 2020-01-22 3
4 2020-01-29 4
让我们通过在
freq
df['Delta']=df.Sun.sub(df.Monday)
df['Date']=pd.Series(pd.date_range(pd.Timestamp('2020-01-01'), periods=7, freq='7d'))
或者干脆
df=df.assign(Delta=df.Sun.sub(df.Monday),Date=pd.Series\
(pd.date_range(pd.Timestamp('2020-01-01'), periods=7, freq='7d')))
Monday Tuesday Wednesday Thursday Friday Sat Sun Delta Date
0 5 10 15 20 25 30 35 30 2020-01-01
1 1 2 3 4 5 6 7 6 2020-01-08
谢谢,我会努力的。这段代码看起来像是创建了日期增量,对吗?它也会显示三角洲吗?不,不幸的是,不是三角洲。我不太明白你说的三角洲是什么意思。你能试着用其他的话向我解释一下吗?是的,如果我不清楚,我道歉。它只是取第1天列中的任何值和第7天列中的任何值的增量-第1天是星期一,第7天是星期天好!但是如果你在7天内增加天数差,那么所有的天数都是同一天(即周一、周二、周三或……),那么你希望所有的增量都是一样的吗?我不明白这部分:35-5=30;7-1=6:这些数字(35,5,7,1)来自哪里?这很有用。让我也试试这个。感谢@wwnde有没有一种方法可以通过调用末尾的列列表来创建只包含日期和增量(不包括其他日期)的新数据帧。请尝试
df=df.assign(Delta=df.Sun.sub(df.Monday),Date=pd.Series\(pd.Date\u范围(pd.Timestamp('2020-01-01'),periods=7,freq='7d'))[[[Delta','Date]]
还有一个问题。假设我不知道列名,我想使用Delta进行索引。我是否只需要Delta=df[8].sub(df[0])???我也可以这样做吗@WWN使用整数loc访问器,df['Delta']=df.iloc[:,6].sub(df.iloc[:,0])
,i
代表整数,:
表示所有行,0
和6
是列indices@baxx我相信这就是pd.Series所做的。它将输出锁定到现有索引。来自文档的标签不必是唯一的,但必须是可哈希类型。该对象支持基于整数和基于标签的索引,并提供大量方法来执行涉及索引的操作。ndarray中的统计方法已被覆盖,以自动排除丢失的数据(当前表示为NaN)。
df['Delta']=df.Sun.sub(df.Monday)
df['Date']=pd.Series(pd.date_range(pd.Timestamp('2020-01-01'), periods=7, freq='7d'))
df=df.assign(Delta=df.Sun.sub(df.Monday),Date=pd.Series\
(pd.date_range(pd.Timestamp('2020-01-01'), periods=7, freq='7d')))
Monday Tuesday Wednesday Thursday Friday Sat Sun Delta Date
0 5 10 15 20 25 30 35 30 2020-01-01
1 1 2 3 4 5 6 7 6 2020-01-08