python - 从由 pandas 时间戳组成的数据帧中获取平均值

标签 python pandas datetime timedelta

我有两个 pandas 系列,closeDatecreatedDate,这些元素是 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

在这种情况下使用向量化函数更好有两个主要原因:

  1. 底层 pd.Timestamp 是数值数组 ( source )。
  2. 与列表 ( source ) 上的 zip 相比,数组上的
  3. zip 表现不佳。

关于python - 从由 pandas 时间戳组成的数据帧中获取平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50454573/

相关文章:

Python - 使用 Numpy 进行相关性测试

python - 在创建实例时创建配置文件模型

python - 在 Tornado 项目中验证表单数据的最佳方法?

python - 使单元格条目成为 Pandas 数据框中列的名称

php - 在 PHP 中将一种日期格式转换为另一种日期格式

php - MySQL如何从今天记录的表中选择数据?

php - 如何在mysql中求和不同的值

python - 除了Python中的中断

python - 如何创建一个返回从 n 到 1 的整数列表的函数?

python - 使用 python/pandas 在 excel 上创建颜色渐变的最简单方法?