首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Pandas中的DataFrame计算天数?

用Pandas中的DataFrame计算天数?
EN

Stack Overflow用户
提问于 2020-12-16 08:15:11
回答 2查看 46关注 0票数 2

我有DataFrame与客户的协议如下:

代码语言:javascript
复制
rng = pd.date_range('2020-12-01', periods=5, freq='D')
df = pd.DataFrame({ "ID" : ["1", "2", "1", "2", "2"], "Date": rng})

我需要创建基于以上df计算的新DataFrame:

  1. New1 =从第一个协议到今天的天数(16.12)
  2. New2 =从最后协议到今天的天数(16.12)

为了更精确,我需要创建如下所示的df:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-16 08:19:25

使用Series.rsub从右侧减去今天,并通过Series.dt.days将时间增量转换为天,然后根据GroupBy.agg对每个组的GroupBy.firstGroupBy.last值进行聚合:

代码语言:javascript
复制
now = pd.to_datetime('today')

df = (df.assign(new = df['Date'].rsub(now).dt.days)
        .groupby('ID').agg(New1 = ('new', 'first'),
                           New2 = ('new', 'last')))
        .reset_index()
print (df)
  ID  New1  New2
0  1    15    13
1  2    14    11
票数 0
EN

Stack Overflow用户

发布于 2020-12-16 08:20:46

也许可以试试groupby

代码语言:javascript
复制
New1 = pd.to_datetime('today') - df.groupby("ID")['Date'].min()
New2 = pd.to_datetime('today') - df.groupby("ID")['Date'].max()
df2 = pd.DataFrame({'ID': df['ID'].drop_duplicates(), 'New1': New1.tolist(), 'New2': New2.tolist()})
print(df2)

输出:

代码语言:javascript
复制
  ID    New1    New2
0  1 15 days 13 days
1  2 14 days 11 days
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65319496

复制
相关文章

相似问题

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