查找数据框中具有最高均值的行

时间:2019-02-18 18:34:14

标签: python pandas group-by filtering identity-column

我正在尝试在一个非常大的数据框中找到具有最高均值的行。

原因:我使用激光跟踪仪进行扫描,并使用“较高”点作为扫描开始的参考。我试图通过我的数据找到放置的对象。

我用以下方法计算了每一行的平均值:

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列),并且没有其他任何作用。它仍然显示所有行。

2 个答案:

答案 0 :(得分:0)

这是不使用groupby

的一种方法
moy=base.sort_values('Mean').tail(1)

答案 1 :(得分:0)

似乎您的数据是字符串或单列,并且两个数字之间有空格。建议将列分为两部分,和/或使用类似下面的方法将索引设置为您感兴趣的特定列。

import pandas as pd

df = pd.read_csv('testdata.txt', names=["Index", "Mean"], delimiter="\s+")
df = df.set_index("Index")
print(df)