日期之间的差异np数组 - 当前日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日期之间的差异np数组 - 当前日期相关的知识,希望对你有一定的参考价值。

我试图找到Pandas Dataframe中的日期列表与当前日期之间的天数。

我想创建一个新列,其中包含截止日期和当前日期之间的天数。例如:

+---------------------+------------+
|      Due Date       | Difference |
+---------------------+------------+
| 2019-04-15 00:00:00 |        146 |
| 2019-02-11 00:00:00 |         83 |
| 2019-03-11 00:00:00 |        111 |
| 2019-01-04 00:00:00 |         45 |
| 2019-05-13 00:00:00 |        174 |
+---------------------+------------+

我试图这样做:

current = np.datetime64('today')
df['Difference'] = df['Due Date'] - current

但我得错了数字。如果我单独做它们,它可以正常工作:

df['Due Date'][0] - current

任何帮助都会很棒。谢谢!

答案

但我得错了数字。

假设Due Datedatetime系列,在Pandas 0.23 / NumPy 1.14.3上对我工作正常:

print(df['Due Date'] - np.datetime64('today'))

0   146 days
1    83 days
2   111 days
3    45 days
4   174 days
Name: Due Date, dtype: timedelta64[ns]

如果你想要整数,更惯用的是使用Pandas生成的对象和dt.days

print((df['Due Date'] - pd.Timestamp('today')).dt.days)

0    145
1     82
2    110
3     44
4    173
Name: Due Date, dtype: int64

请注意,例如,使用NumPy版本导致的一天差异。真正的答案是在两者之间,但是四舍五入可能不是人们所期望的。

另一答案

我认为你需要将它们转换为datetime来执行类似日期的操作。

df['Due Date'] = pd.to_datetime(df['Due Date'])

所以完整的代码看起来像这样:

df['Due Date'] = pd.to_datetime(df['Due Date'])
current = np.datetime64('today')
df['Difference'] = df['Due Date'] - current

编辑:另一个可能的问题:我认为你需要将当前日期添加为列(或熊猫系列),所以一个很好的解决方案将是:

current = np.datetime64('today')
df['current'] = np.datetime64('today')
df['Difference'] = df['Due Date'] - df['current']
另一答案

我会检查df["Due Date"]的格式。如果它与今天的日期格式不同,则切换它。如果格式匹配,广播(简单减法)应该有效。

否则,请尝试使用lambda函数来应用更改:

df['Difference'] = df['Due Date'].apply(lambda x: x - current, axis=1)

以上是关于日期之间的差异np数组 - 当前日期的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin:获取两个日期之间的差异(现在和以前的日期)

如何使用javascript查找两个日期之间的天数差异

如何在java中计算两个日期之间的年龄或差异

计算两个 Java 日期实例之间的差异

如何检查两个日期之间的差异(以秒为单位)?

如何重写我的 swift 代码,以便它还考虑计算两个日期之间的差异,当一个日期在未来时?