2020年9月12日 星期六

[ Python 常見問題 ] shuffling/permutating a DataFrame in pandas

 Source From Here

Question
What's a simple and efficient way to shuffle a dataframe in pandas, by rows or by columns? I.e. how to write a function shuffle(df, n, axis=0) that takes a dataframe, a number of shuffles n, and an axis (axis=0 is rows, axis=1 is columns) and returns a copy of the dataframe that has been shuffled n times.

HowTo
  1. >>> import pandas as pd  
  2. >>> df = pd.DataFrame({'A':range(10), 'B':range(10)})  
  3. >>> df  
  4.    A  B  
  5. 0  0  0  
  6. 1  1  1  
  7. 2  2  2  
  8. 3  3  3  
  9. 4  4  4  
  10. 5  5  5  
  11. 6  6  6  
  12. 7  7  7  
  13. 8  8  8  
  14. 9  9  9  
  15. >>> df.apply(lambda r: print(r), axis=0)  
  16. 0    0  
  17. 1    1  
  18. 2    2  
  19. 3    3  
  20. 4    4  
  21. 5    5  
  22. 6    6  
  23. 7    7  
  24. 8    8  
  25. 9    9  
  26. Name: A, dtype: int64  
  27. 0    0  
  28. 1    1  
  29. 2    2  
  30. 3    3  
  31. 4    4  
  32. 5    5  
  33. 6    6  
  34. 7    7  
  35. 8    8  
  36. 9    9  
  37.   
  38. >>> import numpy as np  
  39. >>> def shuffle(df, n=1, axis=0):  
  40. ...     df = df.copy()  
  41. ...     for _ in range(n):  
  42. ...         df.apply(np.random.shuffle, axis=axis)  
  43. ...     return df  
  44. ...  
  45. >>> shuffle(df)  
  46.    A  B  
  47. 0  3  8  
  48. 1  0  3  
  49. 2  7  0  
  50. 3  2  7  
  51. 4  9  9  
  52. 5  8  1  
  53. 6  6  4  
  54. 7  1  5  
  55. 8  5  6  
  56. 9  4  2  
  57. >>> df  
  58.    A  B  
  59. 0  0  0  
  60. 1  1  1  
  61. 2  2  2  
  62. 3  3  3  
  63. 4  4  4  
  64. 5  5  5  
  65. 6  6  6  
  66. 7  7  7  
  67. 8  8  8  
  68. 9  9  9  


沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...