为什么我不能在这里使用groupby函数来计算另一列的平均值?

时间:2019-05-10 16:53:46

标签: python pandas numpy

我正在尝试查找一组我希望按发送时间分类的电子邮件的平均CTR,以确定CTR是否受发送时间的影响。但是出于某种原因,熊猫只是不想让我找到点击率值的平均值。

正如您将在下面看到的那样,我尝试使用均值函数来查找每个时间点的点击率,但我不断收到错误消息:

DataError: No numeric types to aggregate

对我来说,这意味着我的点击率数字不是整数或浮点数,而是字符串。但是,尽管它们以字符串形式出现,但我已经将它们转换为浮点数。我也知道这一点,因为如果我使用sum()函数代替平均值函数,它就可以正常工作。

代码行非常简单:

df.groupby("TIME SENT", as_index=False)['CTR'].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

1 个答案:

答案 0 :(得分:0)

df['CTR']= (df['CTR'].str.strip('%').astype('float'))/100

上面的代码从CTR列中删除%,然后将其类型更改为float。然后可以进行分组。