查找 python 中日期列表之间的差异
Find difference between list of dates in python
我想找出以天为单位的日期列表之间的差异。
我有一个时间戳对象列表。
[Timestamp('2016-10-18 00:00:00'), Timestamp('2016-10-18 00:00:00'), Timestamp('2016-10-19 00:00:00'), Timestamp('2016-10-29 00:00:00'), Timestamp('2016-10-31 00:00:00'), Timestamp('2016-11-01 00:00:00'), Timestamp('2016-11-09 00:00:00'), Timestamp('2016-11-09 00:00:00'), Timestamp('2016-11-11 00:00:00'), Timestamp('2016-11-13 00:00:00'), Timestamp('2016-11-13 00:00:00')]
我想要以下结果
[0,1,10,2,1,8,0,2,2,0]
我尝试了以下代码,但出现编译错误 "TypeError: 'Timestamp' object is not iterable"
def calculateInterOrderTime(dateList):
result = map(lambda x: [i / np.timedelta64(1, 'D') for i in np.diff([c for c in x])[0]],dateList)
print(list(result))
如果有人能帮我用我的 lambda 表达式做我想做的事就太好了。
由于 pandas 被标记,其中 l
是您的列表,您可以使用:series.diff()
:
pd.Series(l).diff().dt.days.dropna().tolist()
[0.0, 1.0, 10.0, 2.0, 1.0, 8.0, 0.0, 2.0, 2.0, 0.0]
使用Series
构造函数,Series.diff
, Series.dt.days
, remove first value by Series.iloc
,转换为整数,然后转换为列表:
print (pd.Series(dateList).diff().dt.days.iloc[1:].astype(int).tolist())
[0, 1, 10, 2, 1, 8, 0, 2, 2, 0]
您的解决方案应更改为 DatetimeIndex
,因此可以在不理解列表的情况下划分所有值:
print ((np.diff(pd.DatetimeIndex(dateList)) / np.timedelta64(1, 'D')).astype(int).tolist())
[0, 1, 10, 2, 1, 8, 0, 2, 2, 0]
因为是 list
我们可以使用列表操作
[(t - s).days for s, t in zip(l, l[1:])]
Out[137]: [0, 1, 10, 2, 1, 8, 0, 2, 2, 0]
我想找出以天为单位的日期列表之间的差异。
我有一个时间戳对象列表。
[Timestamp('2016-10-18 00:00:00'), Timestamp('2016-10-18 00:00:00'), Timestamp('2016-10-19 00:00:00'), Timestamp('2016-10-29 00:00:00'), Timestamp('2016-10-31 00:00:00'), Timestamp('2016-11-01 00:00:00'), Timestamp('2016-11-09 00:00:00'), Timestamp('2016-11-09 00:00:00'), Timestamp('2016-11-11 00:00:00'), Timestamp('2016-11-13 00:00:00'), Timestamp('2016-11-13 00:00:00')]
我想要以下结果
[0,1,10,2,1,8,0,2,2,0]
我尝试了以下代码,但出现编译错误 "TypeError: 'Timestamp' object is not iterable"
def calculateInterOrderTime(dateList):
result = map(lambda x: [i / np.timedelta64(1, 'D') for i in np.diff([c for c in x])[0]],dateList)
print(list(result))
如果有人能帮我用我的 lambda 表达式做我想做的事就太好了。
由于 pandas 被标记,其中 l
是您的列表,您可以使用:series.diff()
:
pd.Series(l).diff().dt.days.dropna().tolist()
[0.0, 1.0, 10.0, 2.0, 1.0, 8.0, 0.0, 2.0, 2.0, 0.0]
使用Series
构造函数,Series.diff
, Series.dt.days
, remove first value by Series.iloc
,转换为整数,然后转换为列表:
print (pd.Series(dateList).diff().dt.days.iloc[1:].astype(int).tolist())
[0, 1, 10, 2, 1, 8, 0, 2, 2, 0]
您的解决方案应更改为 DatetimeIndex
,因此可以在不理解列表的情况下划分所有值:
print ((np.diff(pd.DatetimeIndex(dateList)) / np.timedelta64(1, 'D')).astype(int).tolist())
[0, 1, 10, 2, 1, 8, 0, 2, 2, 0]
因为是 list
我们可以使用列表操作
[(t - s).days for s, t in zip(l, l[1:])]
Out[137]: [0, 1, 10, 2, 1, 8, 0, 2, 2, 0]