我有一个熊猫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
答案 0 :(得分:2)
您可以使用function ForceDirectories(FullPath: string): Boolean; // Works with UNC paths
begin
TDirectory.CreateDirectory(FullPath);
Result:= DirectoryExists(FullPath);
end;
和groupby
:
mode
在某些情况下,这里的输出可能与您的预期输出有所不同。
我还应该提到,您可能不希望对非分类数据(包括浮点数据)使用模式。请考虑先对列进行因子分解,否则由于浮点数不正确,结果可能不正确。
答案 1 :(得分:0)
您可以使用mode
模块中的函数statistics
进行聚合:
from statistics import mode
df.groupby(np.arange(len(df)) // 3).agg({'time': 'last', 'a': mode, 'b': mode})
输出:
time a b
0 2 0.5 -2.0
1 5 0.1 -1.0
2 8 0.5 -1.0
在Python 3.8中,mode
返回遇到的第一个模式。以前,当发现多个模式时,它会引发StatisticsError
。