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))
    
    
    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站