pomato_9595 2019-01-09 19:21 采纳率: 0%
浏览 1003

python中 dataframe使用permutation和take对 列 进行随机排序失败

请问python中 dataframe使用sampler和take对列进行随机排列为什么不行呢?

import pandas as pd
import numpy as np
from pandas import DataFrame
from pandas import Series
df=DataFrame(np.arange(20).reshape(5,4))
sampler=np.random.permutation(5)
print(df.take(sampler,axis=1))

报错如下
Traceback (most recent call last):
File "C:\Users\XXXX\Desktop\test190109.py", line 7, in
print(df.take(sampler,axis=1))
File "C:\Users\XXXxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\generic.py", line 2891, in take
return self._take(indices, axis=axis, is_copy=is_copy)
File "C:\Users\XXXXX\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\generic.py", line 2789, in _take
verify=True)
File "C:\Users\XXXXXX\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\internals.py", line 4530, in take
indexer = maybe_convert_indices(indexer, n)
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\indexing.py", line 2480, in maybe_convert_indices
raise IndexError("indices are out-of-bounds")
IndexError: indices are out-of-bounds

目测是最后一行axis=1的问题?去掉了就能跑了

  • 写回答

1条回答

  • lyhsdy 2019-01-10 09:33
    关注

    ←如果以下回答对你有帮助,请点击右边的向上箭头及采纳下答案

    因为你只有4列,所以改成sampler=np.random.permutation(4)就可以了

    import pandas as pd
    import numpy as np
    from pandas import DataFrame
    from pandas import Series
    df=DataFrame(np.arange(20).reshape(5,4))
    sampler=np.random.permutation(4)
    print(df.take(sampler,axis=1))
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题