首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连续数列的时间间隔计算

连续数列的时间间隔计算
EN

Stack Overflow用户
提问于 2022-11-24 22:35:53
回答 1查看 30关注 0票数 1

我有一个像这样的数据文件:

代码语言:javascript
复制
   Path_Version commitdates Year-Month         API Age     api_spec_id 
168          NaN  2018-10-19    2018-10             39             521   
169          NaN  2018-10-19    2018-10             39             521  
170          NaN  2018-10-12    2018-10             39             521
171          NaN  2018-10-12    2018-10             39             521  
172          NaN  2018-10-12    2018-10             39             521  
173          NaN  2018-10-11    2018-10             39             521  
174          NaN  2018-10-11    2018-10             39             521  
175          NaN  2018-10-11    2018-10             39             521  
176          NaN  2018-10-11    2018-10             39             521  
177          NaN  2018-10-11    2018-10             39             521  
178          NaN  2018-09-26    2018-09             39             521  
179          NaN  2018-09-25    2018-09             39             521 

我想先计算从第一个提交日期到最后一个提交日期的时间,然后对提交日期进行排序,所以如下所示:

代码语言:javascript
复制
   Path_Version commitdates Year-Month         API Age     api_spec_id   Days_difference
168          NaN  2018-10-19    2018-10             39             521     25
169          NaN  2018-10-19    2018-10             39             521     25
170          NaN  2018-10-12    2018-10             39             521     18
171          NaN  2018-10-12    2018-10             39             521     18
172          NaN  2018-10-12    2018-10             39             521     18
173          NaN  2018-10-11    2018-10             39             521     16
174          NaN  2018-10-11    2018-10             39             521     16
175          NaN  2018-10-11    2018-10             39             521     16
176          NaN  2018-10-11    2018-10             39             521     16
177          NaN  2018-10-11    2018-10             39             521     16
178          NaN  2018-09-26    2018-09             39             521     1
179          NaN  2018-09-25    2018-09             39             521     0

我首先尝试通过api_spec_id对提交进行排序,因为它对每个API都是唯一的,然后计算出差异。

代码语言:javascript
复制
final_api['commitdates'] = final_api.groupby('api_spec_id')['commitdate'].apply(lambda x: x.sort_values())

final_api['diff'] = final_api.groupby('api_spec_id')['commitdates'].diff() / np.timedelta64(1, 'D')
final_api['diff'] = final_api['diff'].fillna(0)

它只会为整个列返回一个零。我不想对它们进行分组,我只想根据排序的提交日期计算差异:从第一次提交到整个数据集中的最后一次,以天为单位

你知道我怎么能做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-24 22:44:06

使用pandas.to_datetimesubmindt.days

代码语言:javascript
复制
t = pd.to_datetime(df['commitdates'])

df['Days_difference'] = t.sub(t.min()).dt.days

如果您需要对每个API进行分组:

代码语言:javascript
复制
t = pd.to_datetime(df['commitdates'])

df['Days_difference'] = t.sub(t.groupby(df['api_spec_id']).transform('min')).dt.days

输出:

代码语言:javascript
复制
     Path_Version commitdates Year-Month  API Age  api_spec_id  Days_difference
168           NaN  2018-10-19    2018-10       39          521               24
169           NaN  2018-10-19    2018-10       39          521               24
170           NaN  2018-10-12    2018-10       39          521               17
171           NaN  2018-10-12    2018-10       39          521               17
172           NaN  2018-10-12    2018-10       39          521               17
173           NaN  2018-10-11    2018-10       39          521               16
174           NaN  2018-10-11    2018-10       39          521               16
175           NaN  2018-10-11    2018-10       39          521               16
176           NaN  2018-10-11    2018-10       39          521               16
177           NaN  2018-10-11    2018-10       39          521               16
178           NaN  2018-09-26    2018-09       39          521                1
179           NaN  2018-09-25    2018-09       39          521                0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74566819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档