具有pandas的Datetime对象均值函数

发布于 2021-01-29 17:32:19

我是编程新手,所以如果这个问题没有任何意义,我会提前道歉。我注意到,当我尝试使用日期时间对象这样的日期时间对象来计算熊猫数据框的平均值时:datetime.datetime(2014,7,10),它无法计算平均值,但是似乎是能够毫无问题地计算同一数据帧的最小值和最大值。

d={'one' : Series([1, 2, 3], index=['a', 'b', 'c']), 'two' :Series([datetime.datetime(2014, 7, 9) , datetime.datetime(2014, 7, 10) , datetime.datetime(2014, 7, 11) ], index=['a', 'b', 'c'])}
df=pd.DataFrame(d)

df
Out[18]: 
      one        two    
   a    1 2014-07-09
   b    2 2014-07-10
   c    3 2014-07-11

df.min()
Out[19]: 
   one             1
   two    2014-07-09
dtype: object

df.mean()
Out[20]: 
   one    2
dtype: float64

我确实注意到min和max函数将所有列都转换为对象,而平均值函数仅输出浮点数。谁能向我解释为什么均值函数只能处理浮点数?我还有另一种方法来获取带有日期时间对象的数据框的平均值吗?我可以使用纪元时间(整数)来解决它,但是如果有直接的方法,它将非常方便。我使用Python
2.7

我很感谢任何提示。

关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以使用datetime.timedelta

    import functools
    import operator
    import datetime
    
    import pandas as pd
    
    d={'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 'two' :pd.Series([datetime.datetime(2014, 7, 9) , datetime.datetime(2014, 7, 10) , datetime.datetime(2014, 7, 11) ], index=['a', 'b', 'c'])}
    df = pd.DataFrame(d)
    
    def avg_datetime(series):
        dt_min = series.min()
        deltas = [x-dt_min for x in series]
        return dt_min + functools.reduce(operator.add, deltas) / len(deltas)
    
    print(avg_datetime(df['two']))
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看