python - Pandas 每 n 行 groupby 模式

标签 python pandas group-by

我有一个 pandas df,我试图每 3 行进行分组并获取模式。我怎样才能做到这一点?

示例:

time                       a                       b
0                          0.5                    -2.0
1                          0.5                    -2.0
2                          0.1                    -1.0
3                          0.1                    -1.0
4                          0.1                    -1.0
5                          0.5                    -1.0
6                          0.5                    -1.0
7                          0.5                    -3.0
8                          0.5                    -1.0

应该是:

time                       a                       b
2                          0.5                    -2.0
5                          0.1                    -1.0
8                          0.5                    -1.0

最佳答案

您可以使用groupbymode:

df.groupby(np.arange(len(df)) // 3).agg(lambda x: x.mode().to_numpy()[-1])

   time    a    b 
0     2  0.5 -2.0
1     5  0.1 -1.0
2     8  0.5 -1.0

如果可能有多种模式,则在某些情况下,此处的输出可能与您的预期输出不同。

我还应该提到,您可能不想对非分类性质的数据(包括 float 据)使用模式。首先考虑对您的列进行因式分解,否则您可能会因浮点不准确而得到不准确的结果。

关于python - Pandas 每 n 行 groupby 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59110612/

相关文章:

python - 在Python中格式化日期时间时如何匹配str中的任意字符?

python - 如何在 BeautifulSoup 中保持 Django 模板代码的有效性

python - 为什么我无法连接到远程 mysql 数据库?

python - ValueError:输入包含 NaN、无穷大或对于 dtype ('float64' 来说太大的值),即使 isnan 和 isinf 为 false 且 dtype=float64 时也是如此

mysql - 如何在mysql中合并具有相同值的行

python - 如何在 web2py View 中更改 SQLFORM 样式

Python 分组并计算列中的不同值并创建分隔列表

python - pandas - 根据条件添加列

ruby-on-rails - rails - 按天和小时分组

mysql - 分组排序