【发布时间】:2021-09-08 21:04:18
【问题描述】:
我需要仅使用 Python 和 Pandas 解决数据科学问题,其中给定的输入是入住日期、退房日期和付款一个人的每一本书
check_in check_out payment
2020-02-28 2020-03-02 66
2020-02-27 2020-02-29 100
我需要显示我之前从那 2 本书中获得的每日收入。我的想法是,我必须为每个日期(如 66/3)拆分它,并将其从 02-28 分配到 03-02 和 100/2,然后将其从 02-27 分配到 02-29 进行第二次订购,然后我会得到这样的结果
date earnings
2020-02-27 50
2020-02-28 22+50
2020-02-29 22
2020-03-01 22
如果我把它们总结起来会是这样的
date earnings
2020-02-27 50
2020-02-28 72
2020-02-29 22
2020-03-01 22
我已经将付款列与输入分开,并创建了一个新的数据框,其中包含两个新列,分别代表客人使用 day_stay 停留了多长时间以及我使用 daily_earn 获得了多少收入 使用下面的代码
df["date_stay"] = abs(df["check_in"] - df["check_out"]) # Get difference
df["date_stay"] = pd.to_numeric(df["date_stay"].dt.days) # Turn to days
df["daily_earn"] = df["payment"]/df["date_stay"]
那么结果会是这样的
check_in check_out payment day_stay daily_earn
2020-02-28 2020-03-02 66 3 22
2020-02-27 2020-02-29 100 2 50
最后一步是将 daily_earn 中的值分配到从 02-27 到 03-01 的相应日期,但我不知道该怎么做。我曾尝试使用 df.groupby("check_in").sum() 但它没有提供所需的输出,因为输入和输出之间的行数不同。有什么想法吗?
【问题讨论】:
标签: python pandas dataframe date