首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用两个列唯一键根据列日期添加行- pandas

使用两个列唯一键根据列日期添加行- pandas
EN

Stack Overflow用户
提问于 2020-07-29 23:43:41
回答 1查看 33关注 0票数 1

所以我有一个数据框架,比如:

代码语言:javascript
运行
复制
Number Country StartDate EndDate
12     US      1/1/2023  12/1/2023
12     Mexico  1/1/2024  12/1/2024 

我想要做的是:

代码语言:javascript
运行
复制
Number Country Date
12     US      1/1/2023  
12     US      2/1/2023
12     US      3/1/2023
12     US      4/1/2023
12     US      5/1/2023
12     US      6/1/2023
12     US      7/1/2023
12     US      8/1/2023
12     US      9/1/2023
12     US      10/1/2023
12     US      11/1/2023
12     US      12/1/2023
12     Mexico      1/1/2024  
12     Mexico      2/1/2024
12     Mexico      3/1/2024
12     Mexico      4/1/2024
12     Mexico      5/1/2024
12     Mexico      6/1/2024
12     Mexico      7/1/2024
12     Mexico      8/1/2024
12     Mexico      9/1/2024
12     Mexico      10/1/2024
12     Mexico      11/1/2024
12     Mexico      12/1/2024

这个问题与Adding rows for each month in a dataframe based on column date非常相似

然而,这个问题只说明了唯一键是一列。在本例中,唯一的关键字是数字和国家。

这是我目前正在做的,但它只占一个列‘数字’,我需要包括数字和国家,因为他们是唯一的关键字。

代码语言:javascript
运行
复制
df1 = pd.concat([pd.Series(r.Number, pd.date_range(start = r.StartDate, end = r.EndDate, freq='MS')) 
                    for r in df1.itertuples()]).reset_index().drop_duplicates()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-29 23:47:53

创建range,然后单击explode

代码语言:javascript
运行
复制
df['New']= [pd.date_range(start = x, end = y, freq='MS') for x , y in zip(df.pop('StartDate'),df.pop('EndDate'))]
df=df.explode('New')
Out[54]: 
   Number Country        New
0      12      US 2023-01-01
0      12      US 2023-02-01
0      12      US 2023-03-01
0      12      US 2023-04-01
0      12      US 2023-05-01
0      12      US 2023-06-01
0      12      US 2023-07-01
0      12      US 2023-08-01
0      12      US 2023-09-01
0      12      US 2023-10-01
0      12      US 2023-11-01
0      12      US 2023-12-01
1      12  Mexico 2024-01-01
1      12  Mexico 2024-02-01
1      12  Mexico 2024-03-01
1      12  Mexico 2024-04-01
1      12  Mexico 2024-05-01
1      12  Mexico 2024-06-01
1      12  Mexico 2024-07-01
1      12  Mexico 2024-08-01
1      12  Mexico 2024-09-01
1      12  Mexico 2024-10-01
1      12  Mexico 2024-11-01
1      12  Mexico 2024-12-01
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63157366

复制
相关文章

相似问题

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