猿问

数据透视表引发错误唯一值索引错误

我正在尝试修改 python 3/pandas 中的以下数据集


   Rank    Maj  Rank   Maj  Rank    Maj  Rank    Maj  Rank     Maj  Rank     Maj

0  2.00  31.92  3.00  0.00  4.00  33.72  5.00  24.89  6.00  0.00.1  7.00  148.35

1     8  28.26     9     0    10   5.96    11   7.66    12       0    13    6.19

2    14   5.63    15     0    16  17.43    17  26.73    18       0    19    84.7

3    20  25.98    21     0    22   8.65    23   6.38    24       0    25    3.98

4    26   2.44    27     0    28   3.43    29   2.75    30       0    31     1.8

5    32   1.46    33     0    34   1.79    35   2.49    36       0    37    2.51

6    38   1.85    39     0    40   1.48    41   1.05    42       0    43    0.56

7    44   0.36    45     0    46   0.31    47    0.2    49    0.32    50     0.2

到一个数据帧中,第一列或索引将成为排名,第二列将成为 Maj 值。像这样的东西:


   Rank    Maj 

   2.00  31.92  

      8  28.26    

     14   5.63    

     20  25.98  

     26   2.44   

     32   1.46   

     38   1.85  

     44   0.36 

     3.00  0.00

     9     0   

     15     0    

     21     0    

     27     0    

     33     0   

     39     0  

     45     0  

...


     13    6.19

     19    84.7

     25    3.98

     31     1.8

     37    2.51

     43    0.56

     50     0.2

我正在尝试使用表枢轴来做到这一点:


table.pivot_table(index = "Rank", columns = "Maj")

但出现以下错误:


Traceback (most recent call last):

  File "ReadReport.py", line 42, in <module>

    table.pivot_table(index = "Rank", columns = "Maj")

  File "C:\Python38-32\lib\site-packages\pandas\core\frame.py", line 6070, in pivot_table

    return pivot_table(

  File "C:\Python38-32\lib\site-packages\pandas\core\reshape\pivot.py", line 95, in pivot_table

    values = values.drop(key)

  File "C:\Python38-32\lib\site-packages\pandas\core\indexes\base.py", line 5013, in drop

    indexer = self.get_indexer(labels)

  File "C:\Python38-32\lib\site-packages\pandas\core\indexes\base.py", line 2733, in get_indexer

    raise InvalidIndexError(

但我的排名没有任何重复的值。从 2 到 50。


我的主要目标是打印军衔超过少校。


翻翻过去那场雪
浏览 134回答 2
2回答

白猪掌柜的

您可以使用np.reshape:print (pd.DataFrame(df.to_numpy().reshape((-1, 2)), columns=["Rank", "Maj"]))&nbsp; &nbsp;Rank&nbsp; &nbsp; &nbsp;Maj0&nbsp; &nbsp; &nbsp;2&nbsp; &nbsp;31.921&nbsp; &nbsp; &nbsp;3&nbsp; &nbsp; &nbsp; &nbsp;02&nbsp; &nbsp; &nbsp;4&nbsp; &nbsp;33.723&nbsp; &nbsp; &nbsp;5&nbsp; &nbsp;24.894&nbsp; &nbsp; &nbsp;6&nbsp; 0.00.15&nbsp; &nbsp; &nbsp;7&nbsp; 148.356&nbsp; &nbsp; &nbsp;8&nbsp; &nbsp;28.267&nbsp; &nbsp; &nbsp;9&nbsp; &nbsp; &nbsp; &nbsp;08&nbsp; &nbsp; 10&nbsp; &nbsp; 5.969&nbsp; &nbsp; 11&nbsp; &nbsp; 7.66...

叮当猫咪

由于您只有两列,因此您可以执行以下操作:pd.DataFrame({'Rank':&nbsp;df['Rank'].values.ravel(), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'Maj':&nbsp;df['Maj'].values.ravel()})
随时随地看视频慕课网APP

相关分类

Python
我要回答