【发布时间】:2019-07-12 04:45:12
【问题描述】:
我试图在一个非常大的数据框中找到具有最高均值的行。
原因:我用激光跟踪仪扫描了一些东西,并使用“更高”点作为扫描开始的参考点。我试图通过我的数据找到放置的对象。
我计算了每一行的平均值:
base = df.mean(axis=1)
base.columns = ['index','Mean']
以下是每行平均值的示例:
0 4.407498
1 4.463597
2 4.611886
3 4.710751
4 4.742491
5 4.580945
这似乎工作正常,除了它添加了一个索引列,并给出了具有 float64 类型索引的列。 然后我试着用这个来找到平均值最高的行:
moy = base.loc[base.reset_index().groupby(['index'])['Mean'].idxmax()]
这给出了tis:
index Mean
0 0 4.407498
1 1 4.463597
2 2 4.611886
3 3 4.710751
4 4 4.742491
5 5 4.580945
但它只是重新索引(我现在有 3 列而不是 2 列)并且什么都不做。它仍然显示所有行。
【问题讨论】:
-
我认为输出样本和输入样本在这里回答您的问题有点关键。但听起来您已经定义了自己的索引和平均列(基于您之前的 df 中的其他列),现在有了第三列,可能是创建的数据框的已创建索引。
-
是的,新列是(第二个索引)可能来自新数据框的创建。
-
我似乎无法手动索引'base',它说:AttributeError:'Series'对象没有属性'set_index'当我使用时:base.set_index('index')
-
你的数据集是一个序列,你需要将列均值分成两列。
标签: python pandas group-by filtering identity-column