微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 带有pandas的日期时间对象意味着功能

我是编程新手,所以如果这个问题没有任何意义,我会事先道歉.
我注意到当我尝试使用如下格式的日期时间对象计算pandas数据帧的平均值时: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函数将所有列转换为对象,而mean函数输出浮点数.
任何人都可以向我解释为什么平均功能只能处理浮动?
我有另一种方法获取具有日期时间对象的数据框的平均值吗?
我可以通过使用纪元时间(作为整数)来解决它,但如果有直接的方法会很方便.我使用Python 2.7

我很感激任何提示.

解决方法:

您可以使用datetime.timedelta

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)

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']))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐