我有两个熊猫系列,closedDate
和createdDate
,这些元素是pandas时间戳,class 'pandas._libs.tslib.Timestampclass 'pandas._libs.tslib.Timestamp
。
我已经减去了这两个熊猫系列,以制作大熊猫时间名单age
。
closedDate = data.iloc[:,1]
createdDate = data.iloc[:,2]
age = [x-y for x,y in zip(closedDate, createdDate)]
现在,我希望得到age
的平均值,但是我的代码行出错了。
在:average_age = functools.reduce(lambda x, y: x + y, age) / len(age)
出:OverflowError: int too big to convert
我该如何解决这个问题?
谢谢!
答案 0 :(得分:2)
您可以而且应该使用矢量化函数来完成此任务。
在此示例中,您可以从另一个中减去一个pd.Series
。然后,您可以使用mean
方法计算平均值。
data = pd.DataFrame({'createdDate': [pd.Timestamp('2018-01-01'),
pd.Timestamp('2018-05-01')],
'closedDate': [pd.Timestamp('2018-02-01'),
pd.Timestamp('2018-07-01')]})
closedDate = data['closedDate']
createdDate = data['createdDate']
ages = closedDate - createdDate
print(ages)
# 0 31 days
# 1 61 days
# dtype: timedelta64[ns]
res = ages.mean()
print(res)
# 46 days 00:00:00
在这种情况下,使用矢量化函数更好的原因主要有两个:
答案 1 :(得分:0)
你应该像jpp建议的系列那样做,但除此之外,你可以用你提供的列表来做这件事。
average_age = sum(age, timedelta()) / len(age)