python - 计算两个日期之间的差异

标签 python pandas datetime difference

我有一个带有两个日期列(年-月-日)的数据库:

Date_from    Date_to     
17/01/01     17/01/05       
17/02/03     NaN           
17/05/01     17/05/05       
...

Date_from 和 Date_to 是 pandas 列。

我构建了一个函数,如果: - 在 Date_to 中,NaN 返回“corrence”; - 在 Dta_to 中,没有 Nan 使得两列之间存在差异

两个结果都保存在第三列中。像这样:

Data_from    Date_to     Difference
17/01/01     17/01/05       4
17/02/03     NaN           corrence    
17/05/01     17/05/05       4
...

功能是这样的:

from datetime import datetime

def diff(data,d1, d2):
    if pd.isnull(data.iloc[[1],[12]]):
         data['difference'] = 366
    else:
         data[d1] = pd.to_datetime(data[d1])
         data[d2] = pd.to_datetime(data[d2])
         data['difference'] = data[d2] - data[d1]
    return data

d1 = ["Date_from"]
d2 = ["Date_to"]
df = replace_NaN(df,d1,d2)  

出现的错误是这样的:

TypeError: replace_NaN() takes 2 positional arguments but 3 were given

不明白为什么

最佳答案

您不需要函数来执行此操作。相反,

  1. 使用 pd.to_datetime 将列转换为 datetime
  2. Date_to 中减去 Date_from
  3. 使用 dt.days 提取 timedelta 列的天数部分
  4. 对结果调用 fillna

i = pd.to_datetime(df.Date_to, format='%y/%m/%d', errors='coerce')
j = pd.to_datetime(df.Date_from, format='%y/%m/%d', errors='coerce')

df['Difference'] = i.sub(j).dt.days.fillna('corrence')

df

  Date_from   Date_to Difference
0  17/01/01  17/01/05          4
1  17/02/03       NaN   corrence
2  17/05/01  17/05/05          4

关于python - 计算两个日期之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48155048/

相关文章:

python - 类型错误 : execute() takes from 2 to 3 positional arguments but 7 were given

python - PyGame 中的声音缩短

arrays - 基于前 n 行在 groupby() 中创建新列的更短方法

bash - 如何获取上周四(含)?

java - Joda 时间操纵获取每月 15 日和最后一天

python - 类内的装饰器,带有接受参数的函数的参数

python - 如何在pandas数据框中生成动态变量名称

python - 如何使用依赖于其他列的值有效地将多列添加到 pandas 数据框

python - Pandas :逐行比较数据框中的所有值

datetime - Azure 表 'Merge' 不会替换传递值为 null 的字段(例如 :Nullable<Date> field) C#