在数据框中查找均值最高的行
Finding rows with highest means in dataframe
我试图在一个非常大的数据框中找到具有最高均值的行。
原因:我用激光跟踪器扫描了一些东西,并使用 "higher" 点作为扫描开始位置的参考。我试图通过我的数据找到放置的对象。
我计算了每一行的平均值:
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()]
这给出了:
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 列而不是两列)并且什么都不做。它仍然显示所有行。
这是一种不使用 groupby
的方法
moy=base.sort_values('Mean').tail(1)
看起来您的数据是一个字符串或单列,在您的两个数字之间有一个 space。建议使用类似于下面的内容将列拆分为两个 and/or 以将索引设置为您感兴趣的特定列。
import pandas as pd
df = pd.read_csv('testdata.txt', names=["Index", "Mean"], delimiter="\s+")
df = df.set_index("Index")
print(df)
我试图在一个非常大的数据框中找到具有最高均值的行。
原因:我用激光跟踪器扫描了一些东西,并使用 "higher" 点作为扫描开始位置的参考。我试图通过我的数据找到放置的对象。
我计算了每一行的平均值:
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()]
这给出了:
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 列而不是两列)并且什么都不做。它仍然显示所有行。
这是一种不使用 groupby
moy=base.sort_values('Mean').tail(1)
看起来您的数据是一个字符串或单列,在您的两个数字之间有一个 space。建议使用类似于下面的内容将列拆分为两个 and/or 以将索引设置为您感兴趣的特定列。
import pandas as pd
df = pd.read_csv('testdata.txt', names=["Index", "Mean"], delimiter="\s+")
df = df.set_index("Index")
print(df)