我有两个 pandas 系列,closeDate
和 createdDate
,这些元素是 pandas 时间戳,class 'pandas._libs.tslib.Timestampclass 'pandas._libs。 tslib.Timestamp
。
我减去了这两个 pandas 系列来制作 pandas timedelta 的列表 age
。
closedDate = data.iloc[:,1]
createdDate = data.iloc[:,2]
age = [x-y for x,y in zip(closedDate, createdDate)]
现在,我想获得年龄
的平均值,但我的代码行出现错误。
在:average_age = functools.reduce(lambda x, y: x + y,age)/len(age)
输出:OverflowError:int太大而无法转换
我该如何解决这个问题?
谢谢!
最佳答案
您可以而且应该致力于使用矢量化函数来完成此任务。
在此示例中,您可以从另一个 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
在这种情况下使用向量化函数更好有两个主要原因:
关于python - 从由 pandas 时间戳组成的数据帧中获取平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50454573/