我有一个带有两个日期列的数据库(Y-m-d):

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


Date_from和Date_to是熊猫列。

我建立了一个函数,如果:
-在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


我不明白为什么

最佳答案

您不需要执行此操作的功能。代替,


使用datetime将列转换为pd.to_datetime
Date_from减去Date_to
使用timedelta提取dt.days列的天部分
在结果上调用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/

10-11 07:42