gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:01:47 24 4
gpt4 key购买 nike

我有一个数据框,其中两列 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com