我正在尝试查找一组我希望按发送时间分类的电子邮件的平均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
答案 0 :(得分:0)
df['CTR']= (df['CTR'].str.strip('%').astype('float'))/100
上面的代码从CTR列中删除%,然后将其类型更改为float。然后可以进行分组。