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 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办