python - 为什么我不能在这里使用 groupby 函数计算另一列的平均值?
问题描述
我试图找到一组电子邮件的平均点击率,我想按发送时间对其进行分类,以确定点击率是否受到发送时间的影响。但出于某种原因,pandas 只是不想让我找到 CTR 值的平均值。
正如您将在下面看到的,我尝试使用 mean 函数来查找每次 CTR 的平均值,但我不断收到错误:
DataError: No numeric types to aggregate
这对我来说意味着我的点击率数字不是整数或浮点数,而是字符串。但是,尽管它们以字符串形式出现,但我已经将它们转换为浮点数。我也知道这一点,因为如果我使用 sum() 函数代替平均函数,它就可以正常工作。
这行代码非常简单:
df.groupby("TIME SENT", as_index=False)['CTR'].mean()
我无法想象为什么 sum 函数会起作用而 mean 函数会失败,尤其是如果错误是上述错误。有人有什么想法吗?
编辑:我用来将 CTR 列从字符串百分比(85.8%)变为浮动的代码:
i = 0
for index, row in df.iterrows():
df.loc[i, "CTR"] = float(row['CTR'].strip('%'))/100
i += 1
链接到 df.head() :https://ethercalc.org/zw6xmf2c7auw
解决方案
df['CTR']= (df['CTR'].str.strip('%').astype('float'))/100
上面的代码从 CTR 列中删除 %,然后将其类型更改为 float。然后您可以执行 groupby。
推荐阅读
- substrate - 在基材墨水上!如何获取调试信息?
- javascript - useEffect 首次打破 useState 数组
- php - Insert given string value in mysql database as datetime with php
- ubuntu - Emscripten package on Ubuntu 16.04. How to get it to work?
- javascript - Determine the average value across a range of data
- html - 无法在 HTML/CSS 中定位按钮
- r - 如何在现有的相关矩阵上运行 PCA,然后运行回归?
- javascript - 在浏览器和 NodeJS 中加载 JSON 文件的单一 API?
- java - 无法构建 Eclipse Californium 框架
- javascript - 无法以任何方式操作 JSON 对象