【问题标题】:Can I take the average of a datetime function? [duplicate]我可以取日期时间函数的平均值吗? [复制]
【发布时间】:2021-01-14 02:24:40
【问题描述】:

python 新手,因此希望您不要介意我的简单问题... 我是 datetime 函数的新手,目前正在处理时间序列数据。 下面是我的目的的示例数据框。 我的目标是根据“组”列对我的消息进行分组,并取日期时间的mean。这对我的数据可视化很有帮助。

df = pd.DataFrame([['2018-04-12 11:20:57','Hello everyone',1],['2018-04-12 11:20:57','Hello everyone',1],
              ['2018-04-12 11:19:34','second msg',1],['2018-04-13 11:00:57','Random',1],
              ['2018-04-13 11:49:34','3rd msg',2],
             ['2018-04-13 11:29:57','Msg',2]],columns=['datetime','msg','group'])

下面的代码不起作用。

chat_1.groupby('group')['datetime'].mean()
DataError: No numeric types to aggregate

想知道是否有办法解决这个问题?谢谢。

【问题讨论】:

标签: python pandas datetime group-by mean


【解决方案1】:

看你这样做:

df1.datetime = pd.to_datetime(df1.datetime).values.astype(np.int64) 
df1 = pd.DataFrame(pd.to_datetime(df1.groupby('group').mean().datetime))

输出将是:

group  datetime                            
1     2018-04-12 17:15:36.249999872
2     2018-04-13 11:39:45.500000000

【讨论】:

    【解决方案2】:

    我自己从来不需要这样做,但我认为它可以开箱即用。我可能遗漏了一点,但这里有一个解决方法(如果我理解正确的话):

    df["datetime"] = pd.to_datetime(df["datetime"])
    out = [
        {"group": g, "mean": df.loc[df["group"].eq(g)]["datetime"].mean()} 
        for g in df["group"].unique()
    ]
    pd.DataFrame(out)
    

    输出


    编辑

    如果有人能解释为什么 df["datetime"].mean() 有效但 df.groupby("group")["datetime"].mean() 无效,那会很有趣,因为我很困惑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多