python - 将数据框中的日期拆分为 2 个单独的数据框

标签 python pandas dataframe date datetime

我有一个数据框,其中两列 StartEnd 是日期列表。我想要做的是创建两个单独的数据帧,其中对于第一个数据帧,Start 列中的第一个值与 End 列中的值匹配,而对于第二个数据帧 Start 列中的第二个值也与 End 列中的值匹配。

基本上,如果 Start 列中有两个值,则只要 End 列中的日期在第一个日期之后且在第二个日期之前 (如下面示例中的 BBB 行所示),然后我想将这些值放入两个单独的数据帧中。此外,即使 End 列中没有日期(如下面示例中的 EEE 行),我仍然想拆分它。最后,如果 StartEnd 列中的一个或两个为空,则它们将保留在两个数据帧中。

例如,对于下面的数据框:

Name           Start                         End
AAA           2017-09-13            
BBB     2021-11-20, 2022-06-04         2022-04-07
CCC                                    2022-09-29
DDD 
EEE     2021-04-28, 2022-06-14

我试图让第一个数据框看起来像这样:

Name        Start               End
AAA        2017-09-13           
BBB        2021-11-20          2022-04-07
CCC                            2022-09-29
DDD 
EEE        2021-04-28

第二个数据框如下所示:

Name        Start               End
AAA         2016-09-13          
BBB         2022-06-04         2022-04-07
CCC                            2022-09-29
DDD 
EEE         2022-06-14

如果StartEnd列中的日期不在列表中,那会稍微容易一些,但到目前为止我发现很难思考一种计算快速的方法,因此我们将不胜感激,谢谢!

最佳答案

您可以使用:

tmp_df = df.assign(Start=df['Start'].str.split(',')).explode('Start')

df1 = tmp_df.groupby(level=0).first()
df2 = tmp_df.groupby(level=0).last()

注意。如果您已有列表,则可以跳过 .assign(Start=df['Start'].str.split(','))

输出:

# df1
  Name       Start         End
0  AAA  2017-09-13        None
1  BBB  2021-11-20  2022-04-07
2  CCC        None  2022-09-29
3  DDD        None        None
4  EEE  2021-04-28        None

# df2
  Name        Start         End
0  AAA   2017-09-13        None
1  BBB   2022-06-04  2022-04-07
2  CCC         None  2022-09-29
3  DDD         None        None
4  EEE   2022-06-14        None

关于python - 将数据框中的日期拆分为 2 个单独的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74221572/

相关文章:

python - 如何使用 docker 和 monorepo 组织共享库

python - 如何在Python中消除范围内没有不同打乱组合的数字

python - 通过另一个数据框中的匹配索引划分数据框列

python - 如何通过仅保留第一个事件来删除重复,但仅适用于 pandas 上的一个类别

python - 重命名数据框对象

python - 我们如何将 "left outer join"用于大尺寸 pandas 数据帧(大于 5~20GB)?

python - 使用python脚本并行编译多个latex文件

python - fancyimpute Python 3 内存错误

python - 使用条件将一个数据帧映射到另一个数据帧

r - 根据一个数据框中其他值的总和计算一个值