首页 > 解决方案 > 使用字典的 Pandas 跨列排名错误

问题描述

我曾经使用一段代码使用字典对每个类别中的列进行排名。但是使用新的 Pandas/Python3,我收到以下错误:

ValueError:传递值的形状为 (100, 4),索引暗示 (100, 100)

任何建议或帮助表示赞赏。

下面是代码:

import pandas as pd
import numpy as np
d = dict()
d ={'A': 'Health Care', 'AA': 'Materials', 'B': 'Health Care', 'BB': 'Materials'}
data = pd.DataFrame(np.random.rand(100,4), index=range(0,100), columns=d.keys() )
data.groupby(d , axis = "columns").rank(axis = "columns", pct=True)

标签: pandasdictionaryrank

解决方案


尽管我使用的是 Anaconda 3.6.4 和 Pandas 0.22.0,但我在我的机器上运行了该代码并且运行良好。可能是版本问题。这是正确的输出吗?

输出:

d = dict()
d ={'A': 'Health Care', 'AA': 'Materials', 'B': 'Health Care', 'BB': 'Materials'}
data = pd.DataFrame(np.random.rand(100,4), index=range(0,100), columns=d.keys() )
data.groupby(d , axis = "columns").rank(axis = "columns", pct=True)


A   AA  B   BB
0.5 1.0 1.0 0.5
1.0 0.5 0.5 1.0
0.5 0.5 1.0 1.0
0.5 0.5 1.0 1.0
0.5 1.0 1.0 0.5
1.0 0.5 0.5 1.0
1.0 1.0 0.5 0.5
0.5 1.0 1.0 0.5
0.5 0.5 1.0 1.0
1.0 1.0 0.5 0.5

推荐阅读