为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻翻过去那场雪 2023-12-26 14:55:33
我正在尝试修改 python 3/pandas 中的以下数据集   Rank    Maj  Rank   Maj  Rank    Maj  Rank    Maj  Rank     Maj  Rank     Maj0  2.00  31.92  3.00  0.00  4.00  33.72  5.00  24.89  6.00  0.00.1  7.00  148.351     8  28.26     9     0    10   5.96    11   7.66    12       0    13    6.192    14   5.63    15     0    16  17.43    17  26.73    18       0    19    84.73    20  25.98    21     0    22   8.65    23   6.38    24       0    25    3.984    26   2.44    27     0    28   3.43    29   2.75    30       0    31     1.85    32   1.46    33     0    34   1.79    35   2.49    36       0    37    2.516    38   1.85    39     0    40   1.48    41   1.05    42       0    43    0.567    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。我的主要目标是打印军衔超过少校。
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

您可以使用np.reshape:


print (pd.DataFrame(df.to_numpy().reshape((-1, 2)), columns=["Rank", "Maj"]))


   Rank     Maj

0     2   31.92

1     3       0

2     4   33.72

3     5   24.89

4     6  0.00.1

5     7  148.35

6     8   28.26

7     9       0

8    10    5.96

9    11    7.66


...


查看完整回答
反对 回复 2023-12-26
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

由于您只有两列,因此您可以执行以下操作:

pd.DataFrame({'Rank': df['Rank'].values.ravel(),
              'Maj': df['Maj'].values.ravel()})


查看完整回答
反对 回复 2023-12-26
  • 2 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信