Pandas DataFrame 中具有索引和列名的最大 (n) 个数字
Largest (n) numbers with Index and Column name in Pandas DataFrame
我想找出 DataFrame 中最大的 5 个数字,并存储这 5 个值的索引名称和列名称。
我正在尝试使用 nlargest() 和 idxmax 方法,但未能达到我想要的效果。我的代码如下:
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
df = DataFrame({'a': [1, 10, 8, 11, -1],'b': [1.0, 2.0, 6, 3.0, 4.0],'c': [1.0, 2.0, 6, 3.0, 4.0]})
你能告诉我我怎样才能做到这一点。谢谢
max_vals = df.stack().nlargest(5)
这将为您提供一个具有多索引的系列,其中第一级是原始 DataFrame 的索引,第二级是给定值的列名。这是 max_vals
的样子:
3 a 11.0
1 a 10.0
2 a 8.0
b 6.0
c 6.0
要显式获取索引和列名,请在 max_vals
的索引上使用 get_level_values
:
max_idx = max_vals.index.get_level_values(0)
max_cols = max_vals.index.get_level_values(1)
max_idx
的结果:
Int64Index([3, 1, 2, 2, 2], dtype='int64')
max_cols
的结果:
Index(['a', 'a', 'a', 'b', 'c'], dtype='object')
我想找出 DataFrame 中最大的 5 个数字,并存储这 5 个值的索引名称和列名称。
我正在尝试使用 nlargest() 和 idxmax 方法,但未能达到我想要的效果。我的代码如下:
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
df = DataFrame({'a': [1, 10, 8, 11, -1],'b': [1.0, 2.0, 6, 3.0, 4.0],'c': [1.0, 2.0, 6, 3.0, 4.0]})
你能告诉我我怎样才能做到这一点。谢谢
max_vals = df.stack().nlargest(5)
这将为您提供一个具有多索引的系列,其中第一级是原始 DataFrame 的索引,第二级是给定值的列名。这是 max_vals
的样子:
3 a 11.0
1 a 10.0
2 a 8.0
b 6.0
c 6.0
要显式获取索引和列名,请在 max_vals
的索引上使用 get_level_values
:
max_idx = max_vals.index.get_level_values(0)
max_cols = max_vals.index.get_level_values(1)
max_idx
的结果:
Int64Index([3, 1, 2, 2, 2], dtype='int64')
max_cols
的结果:
Index(['a', 'a', 'a', 'b', 'c'], dtype='object')