[英]find 3 largest values in every column in data frame and get the index number python
我有這樣的數據框
A B C D
0 0.037949 0.021150 0.127416 0.040137
1 0.025174 0.007935 0.011774 0.003491
2 0.022339 0.019022 0.024849 0.018062
3 0.017205 0.051902 0.033246 0.018605
4 0.044075 0.044006 0.065896 0.021264
我想獲得每列中索引值為3個最大值的數據框。 所需的輸出
A B C D
0 4 3 0 0
1 0 4 4 4
2 1 0 3 3
您可以通過NumPy進行argsort
,然后切片:
res = pd.DataFrame(df.values.argsort(0), columns=df.columns)\
.iloc[len(df.index): -4: -1]
print(res)
A B C D
4 4 3 0 0
3 0 4 4 4
2 1 0 3 3
這樣的事情應該起作用:
您可以使用nlargest函數獲取前3
值。
In [1979]: result = pd.DataFrame([df[i].nlargest(3).index.tolist() for i in df.columns]).T
In [1974]: result
Out[1974]:
A B C D
0 4 3 0 0
1 0 4 4 4
2 1 0 3 3
特定
>>> df
A B C D
0 0.037949 0.021150 0.127416 0.040137
1 0.025174 0.007935 0.011774 0.003491
2 0.022339 0.019022 0.024849 0.018062
3 0.017205 0.051902 0.033246 0.018605
4 0.044075 0.044006 0.065896 0.021264
您可以將DataFrame.apply
與Series.nlargest
結合使用:
>>> df.apply(lambda s: pd.Series(s.nlargest(3).index))
A B C D
0 4 3 0 0
1 0 4 4 4
2 1 0 3 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.