gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 01:53:44 25 4
gpt4 key购买 nike

我有两个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com