【问题标题】:How do I get continous days count in Python如何在 Python 中获得连续天数
【发布时间】:2019-12-27 04:26:50
【问题描述】:

我有一张关于发票数据的表格。我想计算列 Days_to_next_invoice2 如下所示,它给出下一张发票的剩余天数,可以从 Invoice_Date 列计算,但是 Invoice Date 列中有一些 nan 值,因为没有发票在这几天生成。我能够按照以下代码计算 Days_to_next_invoice,但我希望我的数据类似于 Days_to_next_invoice2。任何建议表示赞赏。 Days_to_next_invoice 属性说明:发票日期之间的差异。示例:2018 年 3 月 14 日 - 2018 年 3 月 13 日 = 1 天。 2018 年 3 月 19 日 - 2018 年 3 月 14 日 = 5 天

Date    Invoice_Date    Days_to_next_invoice    Days_to_next_invoice2
3/13/2018   3/13/2018   1                            1
3/14/2018   3/14/2018   5                            5
3/15/2018   nan        nan                           4
3/16/2018   nan        nan                           3
3/17/2018   nan        nan                           2
3/18/2018   nan        nan                           1
3/19/2018   3/19/2018   4                            4
3/20/2018   nan        nan                           3
3/21/2018   nan        nan                           2
3/22/2018   nan        nan                           1
3/23/2018   3/23/2018   4                            4
3/24/2018   nan        nan                           3
3/25/2018   nan        nan                           2
3/26/2018   nan        nan                           1
3/27/2018   3/27/2018   0                            0

【问题讨论】:

  • 请检查"How to create a Minimal, Complete, and Verifiable example""How to ask"。按照这些文章中的提示,您将获得更好的结果。
  • 你能解释一下下面几行之间的区别,你是如何得出第一行输出 1 和第二行输出 5 的:Date Invoice_Date Days_to_next_invoice Days_to_next_invoice2 3/13/2018 3/13/2018 1 1 3/14/2018 3/14/2018 5 5
  • @RSM 是发票日期之间的差异。 2018 年 3 月 14 日 - 2018 年 3 月 13 日 = 1 天。 2018 年 3 月 19 日 - 2018 年 3 月 14 日 = 5 天。

标签: python pandas


【解决方案1】:

通过isnull 创建Days_to_next_invoice 的掩码,然后使用ascending=False 创建groupbycumcount

s = df["Days_to_next_invoice"].isnull()

df.loc[s,"Days_to_next_invoice"] = s.groupby(s.ne(s.shift()).cumsum()).cumcount(ascending=False)+1

print (df)

         Date Invoice_Date  Days_to_next_invoice  Days_to_next_invoice2
0   3/13/2018    3/13/2018                   1.0                      1
1   3/14/2018    3/14/2018                   5.0                      5
2   3/15/2018          NaN                   4.0                      4
3   3/16/2018          NaN                   3.0                      3
4   3/17/2018          NaN                   2.0                      2
5   3/18/2018          NaN                   1.0                      1
6   3/19/2018    3/19/2018                   4.0                      4
7   3/20/2018          NaN                   3.0                      3
8   3/21/2018          NaN                   2.0                      2
9   3/22/2018          NaN                   1.0                      1
10  3/23/2018    3/23/2018                   4.0                      4
11  3/24/2018          NaN                   3.0                      3
12  3/25/2018          NaN                   2.0                      2
13  3/26/2018          NaN                   1.0                      1
14  3/27/2018    3/27/2018                   0.0                      0

【讨论】:

    猜你喜欢
    • 2022-08-19
    • 1970-01-01
    • 2023-03-12
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 2019-03-28
    相关资源
    最近更新 更多