python dataframe取列名_python – 获取列名在DataFrame中按其值排序

我有一个庞大的数据框,我想创建一个字典.字典的键将是行的索引,值将是按该行中的值(降序)排序的数据帧的列名列表.考虑以下示例:

df= 23 45 12 3 6

45 0.2 1 0.12 0.5 0.1

12 0.5 0.2 1 0.3 0.9

23 0.1 0.9 0.3 1 0.5

我想以下面的形式创建一个字典:

dict={ '45':['45','3','23','12','6'],

'12':['12','6','23','3','45'],

'23':['3','45','6','23']}

其中值是按其行中的值排序的列名.我尝试了以下方法:

for idx,row in df.iteritems():

l = row.values.tolist()

l.sort(reverse=True)

print idx,l

但这给了我的值,而不是按降序排序的列名.任何有关如何产生所需结果的帮助将不胜感激.谢谢.

最佳答案 好吧,这似乎工作:

import numpy as np

df = pd.DataFrame({'A': [1, 3, 10, 50], 'B': [2, -8, 3, 7], 'C': [1, 10, -20, 1]})

>>> dict([(r[0], list(df.columns[np.argsort(list(r)[1: ])])) \

for r in list(df.to_records())])

{0: ['A', 'C', 'B'],

1: ['B', 'A', 'C'],

2: ['C', 'B', 'A'],

3: ['C', 'B', 'A']}

说明:

> list(df.to_records())是一个行列表作为元组.

> r [0]是元组中的第一个元素.

> list(r)[1:]是元组的其余部分.

> np.argsort根据排序的值顺序返回数组的索引.

> dict(list_of_pairs)从一组对中创建一个字典.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值