我目前有一个pandas数据帧,其中保存了0到1之间的值。我正在寻找一个函数,它可以为我提供列的前5个值,以及列的名称和值的相关索引。
示例输入:列名为a:z,索引为1:23的数据框,条目为0到1之间的值
示例输出:每列中包含5个最高条目的数组,每个条目都有列名和索引
编辑: 对于以下数据框:
np.random.seed([3,1415])
df = pd.DataFrame(np.random.randint(10, size=(10, 4)), list('abcdefghij'), list('ABCD'))
df
A B C D
a 0 2 7 3
b 8 7 0 6
c 8 6 0 2
d 0 4 9 7
e 3 2 4 3
f 3 6 7 7
g 4 5 3 7
h 5 9 8 7
i 6 4 7 6
j 2 6 6 5
我想得到一个输出(例如第一列):
[[8,b,A], [8, c, A], [6,i,A], [5, h, A], [4,g,A]].
答案 0 :(得分:2)
考虑数据框df
np.random.seed([3,1415])
df = pd.DataFrame(
np.random.randint(10, size=(10, 4)), list('abcdefghij'), list('ABCD'))
df
A B C D
a 0 2 7 3
b 8 7 0 6
c 8 6 0 2
d 0 4 9 7
e 3 2 4 3
f 3 6 7 7
g 4 5 3 7
h 5 9 8 7
i 6 4 7 6
j 2 6 6 5
我将使用np.argpartition
将每列分隔为5个最小的10 - 5
(也是5
)最大
v = df.values
i = df.index.values
k = len(v) - 5
pd.DataFrame(
i[v.argpartition(k, 0)[-k:]],
np.arange(k), df.columns
)
A B C D
0 g f i i
1 b c a d
2 h h f h
3 i b d f
4 c j h g
答案 1 :(得分:0)
print(your_dataframe.sort_values(ascending=False)[0:4])