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

Python日期之间的差异np数组-当前日期,python,pandas,numpy,datetime,Python,Pandas,Numpy,Datetime,我试图找出熊猫数据框中的日期列表与当前日期之间的天数 我想创建一个新列,其中包含到期日期和当前日期之间的天数。例如: +---------------------+------------+ | Due Date | Difference | +---------------------+------------+ | 2019-04-15 00:00:00 | 146 | | 2019-02-11 00:00:00 | 83 | | 2019

我试图找出熊猫数据框中的日期列表与当前日期之间的天数

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

+---------------------+------------+
|      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

任何帮助都会很好。谢谢

我认为需要将它们转换为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']
但我打错电话了

假设
到期日
日期时间
系列,则我在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版本会导致一天的差异。真正的答案是介于两者之间,但四舍五入可能不是人们所期望的。

我会检查
df[“到期日”]
的格式。如果它的日期时间格式与今天的日期不相同,则将其切换。如果格式匹配,广播(简单减法)应该可以工作

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


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

您可以使用
查看熊猫。days
列的当前数据类型设置为datetime64[ns]仍然会收到相同的错误:2019-04-15 18000 days 23:59:59.999982我想它在旧版本中可能无法工作。你能发布你使用的版本吗?如果OP把他的版本放进去,也许我们可以比较一下。是的,我很抱歉!这对我很有用:(df['Due Date']-pd.Timestamp('today')).dt.days谢谢@jpp:D