使用Dict的跨列熊猫排名错误

时间:2018-07-13 19:15:56

标签: pandas dictionary rank

我曾经使用一段代码使用dict对每个类别中的列进行排名。但是使用新的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)

1 个答案:

答案 0 :(得分:0)

尽管我使用的是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