【发布时间】:2021-02-13 08:04:33
【问题描述】:
我在下面有一个df:
views | stats
40 55
96 162
3 3
71 79
然后我使用下面的代码创建一个计算除法的新列
df['calc'] = (df['stats'] / df['views']).round(0)
这给了我
views | stats | calc
40 55 1.0
96 162 1.0
3 3 1.0
71 79 1.0
11 22 2.0
当我在下面的 stats 列上运行 group by 时,它可以正常工作:
df.groupby(['day','group'])['stats'].mean().reset_index().sort_values(by=['day','stats'], ascending = False)
但是 - 当我从新的计算列中运行一组时:
df.groupby(['day','group'])['calc'].mean().reset_index().sort_values(by=['day','calc'], ascending = False)
day 和 group 是 df 中的其他列,它们是我想要分组的文本值
我的输出给了我一些 inf 值作为我不理解的统计数据的平均值。
我的列的数据类型是:
int64 用于视图和统计数据列和 计算列的 float64
我尝试通过以下操作将 calc 列转换为 int:
df['calc'] = df['calc'].apply(np.int64)
但是得到一个错误提示:OverflowError: cannot convert float infinity to integer
我该如何解决这个问题,这样我就无法将 inf 作为 calc 列的平均值?
谢谢
【问题讨论】:
-
与 day & group 分享一个 sn-p
-
您的数据中可能有
nan。
标签: python python-3.x pandas data-science