【问题标题】:Calculation of days and weeks from some dates in DataFrame in Python Pandas?从 Python Pandas 的 DataFrame 中的某些日期计算天数和周数?
【发布时间】:2021-04-23 12:59:29
【问题描述】:

我有如下数据框:

df = pd.DataFrame({"data" : ["11.01.2020", "05.02.2020", "01.03.2020"]})
df["data"] = df["data"].astype("datetime64")

我有特殊的日期,比如贝洛:

special_date = pd.to_datetime(["20.01.2020", "10.02.2020", "10.03.2020"], dayfirst=True)

我需要向这个数据框添加 4 列:

  • col1 = 距离下一个特殊数据的天数
  • col2 = 距下一个特殊数据的周数
  • col3 = 最后一个特殊数据后的天数
  • col4 = 最后一个特殊数据之后的周数

所以我需要如下结果:(我不确定我在哪里正确计算了大约几周的 col2 和 col4)

【问题讨论】:

  • 你的问题不是很清楚。您如何根据您显示的 df 和 datetineindex 得出data 列中显示的日期?
  • 如果日期之间有 10 天,您预计需要多少周才能回复?
  • 可能我的结果不太好,请只考虑 col1 col2 col3 和 col4 的描述,而不是这个示例结果表

标签: python pandas dataframe date


【解决方案1】:

在这种情况下,您可以使用pandas date time 函数。 这是一个示例:

df["data"] = pd.to_datetime(df["data"], format = "%d%m%Y")

【讨论】:

  • 好的,谢谢,但我的问题是如何进行上述计算?
【解决方案2】:

计算两个日期之间的天数:

import pandas as pd
df = pd.DataFrame({"data" : ["11.01.2020", "05.02.2020", "01.03.2020"]})
df["data"]=pd.to_datetime(df["data"], dayfirst=True)

df["special_date"] = pd.to_datetime(["20.01.2020", "10.02.2020", "10.03.2020"], dayfirst=True)
df['C1'] = (df['special_date'] - df['data']).dt.days
df['C2']=((df['special_date'] - df['data']).dt.days)//7

这会给你:

        data special_date  C1  C2
0 2020-01-11   2020-01-20   9   1
1 2020-02-05   2020-02-10   5   0
2 2020-03-01   2020-03-10   9   1

同样,您可以找到特殊日期之后的周数和天数。

【讨论】:

  • 什么是 c1 c2 ?是我描述中的 col1 col2 吗?
  • 我从您的问题中了解到的是,您想找到两个日期之间的天数和周数并将它们放在一个新列中。是的,c1 和 c2 是您描述中的第 1 列和第 2 列。
  • 完美,你还能计算 col3 和 col4 吗?我会很感激的
  • 根据您的描述,第 3 列应该是“最后一个特殊数据之后的天数”。但是,您还没有提到什么是最后一个特殊日期以及应该计算到什么日期。
  • 最后一个日期
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
  • 2021-03-07
相关资源
最近更新 更多