gpt4 book ai didi

python - Pandas - 从日期时间中提取日期,如果时间超过某个小时则加一天

转载 作者:行者123 更新时间:2023-11-28 20:13:58 28 4
gpt4 key购买 nike

假设我有这个数据框。

import pandas as pd
data = {"Date": ["2018-08-05", "2018-08-05", "2018-08-05", "2018-08-05", "2018-08-06"],
"Time_End":["2018-08-05 13:50:00", "2018-08-05 14:26:00", "2018-08-05 17:30:00", "2018-08-05 17:10:00", "2018-08-06 11:23:00"],
"Reason":["blah1", "blah2", "blah3", "blah4", "blah5"]
}
df = pd.DataFrame.from_dict(data)
df

Date Time_End Reason
0 2018-08-05 2018-08-05 13:50:00 blah1
1 2018-08-05 2018-08-05 14:26:00 blah2
2 2018-08-05 2018-08-05 17:30:00 blah3
3 2018-08-05 2018-08-05 17:10:00 blah4
4 2018-08-06 2018-08-06 11:23:00 blah5

我只想将日期从“Time_End”提取到名为“Birth_date”的新列中。但是,我还想检查一下时间是否过了 17:00。如果是,则提取的日期将加一成为第二天。下面显示了所需的输出。

    Date        Birth_date      Time_End            Reason
0 2018-08-05 2018-08-05 2018-08-05 13:50:00 blah1
1 2018-08-05 2018-08-05 2018-08-05 14:26:00 blah2
2 2018-08-05 2018-08-06 2018-08-05 17:30:00 blah3
3 2018-08-05 2018-08-06 2018-08-05 17:10:00 blah4
4 2018-08-06 2018-08-06 2018-08-06 11:23:00 blah5

我想到了这个,但它没有按我预期的方式工作。

df["after_17"] = df["Time_End"].dt.hour > 17
df["birth_date"] = df["after_17"].map(lambda x: df["Time_End"].dt.date if x else df["Time_End"].dt.date + pd.DateOffset(1))

它将输出连接在一起并形成一行。我如何让它正常工作?我也愿意接受其他类型的解决方案。

最佳答案

使用 datetime 库中的 timedelta 方法将 7 小时添加到 Time_End,然后使用 dt 仅提取日期部分.日期.

import pandas as pd
from datetime import timedelta

data = {"Date": ["2018-08-05", "2018-08-05", "2018-08-05", "2018-08-05", "2018-08-06"],
"Time_End":["2018-08-05 13:50:00", "2018-08-05 14:26:00", "2018-08-05 17:30:00", "2018-08-05 17:10:00", "2018-08-06 11:23:00"],
"Reason":["blah1", "blah2", "blah3", "blah4", "blah5"]
}

df = pd.DataFrame.from_dict(data).astype({'Time_End': 'datetime64'})

td = timedelta(hours=7)

df['Birth_Date'] = (df.Time_End + td).dt.date

输出

    Date        Time_End            Reason  Birth_Date
0 2018-08-05 2018-08-05 13:50:00 blah1 2018-08-05
1 2018-08-05 2018-08-05 14:26:00 blah2 2018-08-05
2 2018-08-05 2018-08-05 17:30:00 blah3 2018-08-06
3 2018-08-05 2018-08-05 17:10:00 blah4 2018-08-06
4 2018-08-06 2018-08-06 11:23:00 blah5 2018-08-06

关于python - Pandas - 从日期时间中提取日期,如果时间超过某个小时则加一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51762231/

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