我有一个带有两个日期列的数据库(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/