我有一个 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
最佳答案
您可以使用groupby
和mode
:
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/