【发布时间】:2017-03-01 14:07:06
【问题描述】:
我有一个如下所示的 pandas 数据框:
A B C D
0 7 2 5 2
1 3 3 1 1
2 0 2 6 1
3 3 6 2 9
可以有 100 列,在上面的例子中我只显示了 4 个。
我想为每一行提取前 k 列及其值。
我可以使用以下方法获得前 k 列:
pd.DataFrame({n: df.T[column].nlargest(k).index.tolist() for n, column in enumerate(df.T)}).T
其中,对于 k=3 给出:
0 1 2
0 A C B
1 A B C
2 C B D
3 D B A
但我想要的是:
0 1 2 3 4 5
0 A 7 C 5 B 2
1 A 3 B 3 C 1
2 C 6 B 2 D 1
3 D 9 B 6 A 3
有没有一种泛(a)oic 方法来实现这一点?
【问题讨论】: