【问题标题】:Average Mean time colume Column h:MM:SS CSV using Pandas使用 Pandas 的平均平均时间列 h:MM:SS CSV
【发布时间】:2021-02-01 18:38:29
【问题描述】:
Sessions Bounce Rate Pages / Session AVD
314636 34.75% 2.02 0:04:25
0 0.00% 0 0:00:00
25402 56.48% 1.69 0:04:24
595 49.58% 2.25 0:02:26
13055 18.47% 3.56 0:04:25
2964 21.32% 3.7 0:02:26

你好!上表是 CSV 的 sn-p,可帮助您了解数据。我想要一种通用方法来查找 AVD 列的平均值/平均值。

这是我目前所拥有的:

import pandas as pd
import numpy as np
import datetime

df = pd.read_csv('ga.csv')
df['avd']=pd.to_datetime(df['avd'], format='H:MM:SS')
print(df['avd'].mean())

但在打印语句之前我收到此错误:

ValueError: time data '0:04:25' does not match format 'H:MM:SS' (match)

如果我添加 errors='ignore' 那么我会从打印语句中得到这个错误:

Could not convert 0:04:250:00:000:04:240:02:260:04:250:02:260:06:090:00:000....(and so on)...to numeric.

我在这里做错了什么?感谢您的帮助!

【问题讨论】:

  • AVD 代表什么?对我来说,这看起来像是一个持续时间(请参阅@RobRaymond 的回答......)
  • 嗨@MrFuppes!这些确实是持续时间值,但我正在寻找更通用的解决方案。

标签: python pandas csv datetime


【解决方案1】:

我推荐timedelta,而不是datetime,因为这只是一个时间。下面的作品

df = pd.read_csv(io.StringIO("""Sessions    Bounce Rate Pages / Session AVD
314636  34.75%  2.02    0:04:25
0   0.00%   0   0:00:00
25402   56.48%  1.69    0:04:24
595 49.58%  2.25    0:02:26
13055   18.47%  3.56    0:04:25
2964    21.32%  3.7 0:02:26
"""), sep="\t")


df["AVD"] = pd.to_timedelta(df["AVD"])
df["AVD"].mean()

【讨论】:

  • 好的,太好了!我确实看到它有效。我对您的解决方案的问题是,它似乎需要我将数据框复制/粘贴为字符串。问题是我试图自动化一个过程,并且需要访问数据框中列出时间值并找到平均值的特定列,而无需太多用户输入。有没有办法做到这一点?
  • SO 要求您将数据作为文本发布的原因是它是可重现的 - 我在此网页上收到了作为文本的数据并将其转换为 DF。如果我删除了如何将您的数据放入 DF 解决方案中的方式仍然保持不变:-)。该方法没有定义如何将数据输入 DF .... 只是它需要是一个 timedelta
猜你喜欢
  • 2015-10-08
  • 1970-01-01
  • 2022-08-14
  • 2011-01-14
  • 2012-06-06
  • 1970-01-01
  • 2019-04-13
  • 2021-04-10
  • 1970-01-01
相关资源
最近更新 更多