gpt4 book ai didi

python - 获取按 DataFrame 中的值排序的列名

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:21 25 4
gpt4 key购买 nike

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

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) 根据对数组创建字典。

关于python - 获取按 DataFrame 中的值排序的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35119368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com