gpt4 book ai didi

python - 使用 Pandas 创建日期范围系列

转载 作者:太空宇宙 更新时间:2023-11-04 02:22:38 25 4
gpt4 key购买 nike

我有一个包含几个人的开始日期和结束日期的数据框:

# input df    
df_input = pd.DataFrame([
["John", "2018-08-03", "2018-08-05"],
["Jack", "2018-08-20", "2018-08-21"]
])
df_input.columns = ["name", "start_day", "finish_day"]

我想为每个人创建一个日期范围(我想要一个包含日期范围的 pd.Series):

# output df
df_output = pd.DataFrame([
["John", "2018-08-03", "2018-08-05", "['2018-08-03', '2018-08-04', '2018-08-05']"],
["Jack", "2018-08-20", "2018-08-21", "['2018-08-20', '2018-08-21']"]
])
df_output.columns = ["name", "start_day", "finish_day", "date_range"]

我不知道如何创建那个范围。
有什么想法吗?

最佳答案

既有挑战性又有趣!我认为以下代码片段非常接近您的要求,尽管形状与您请求的确切输出略有不同。然而,输出的重组形状确实包含日期范围、名称和结束日期。

import pandas as pd
df_input = pd.DataFrame([["John", "2018-08-03", "2018-08-05"],["Jack", "2018-08-20", "2018-08-21"]], columns=['Name','Start_Date','End_Date'])
df_input['Start_Date'] = pd.to_datetime(df_input['Start_Date'], format='%Y-%m-%d')
df_input['End_Date'] = pd.to_datetime(df_input['End_Date'], format='%Y-%m-%d')
df_input.set_index('Start_Date', inplace=True)
def reindex_by_date(df_input):
dates = pd.date_range(df_input.index.min(), df_input['End_Date'].min())
return df_input.reindex(dates).ffill()
finaldf = df_input.groupby('Name').apply(reindex_by_date)
finaldf

关于python - 使用 Pandas 创建日期范围系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51194171/

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