我想在我的数据帧中洗牌列“chr”,保持其余的值不变。我希望确保新值与原始数据帧中的值不同
>>> import pandas as pd
>>> import numpy as np
>>> abuniq = pd.read_csv("/home/m203319/nonenh/abuniq.csv")
>>> abuniq
chr enhmid strand tss dist
0 chr1 60 pos 791 731
1 chr1 993 pos 919 74
2 chr2 72 neg 388 316
3 chr2 92 neg 388 296
4 chr2 172 neg 388 216
5 chr2 484 neg 388 96
6 chr3 100 neg 231 131
7 chr3 362 neg 231 131
8 chr4 163 pos 310 147
9 chr4 464 pos 612 148
10 chr4 756 pos 774 18
11 chr5 290 neg 339 49
12 chr5 538 pos 487 51
13 chr5 730 pos 487 243
>>> #Create df with only chr and drop rest
...
>>> ab_drop = abuniq.drop(['enhmid','strand', 'tss', 'dist'], axis=1)
>>> ab_drop
chr
0 chr1
1 chr1
2 chr2
3 chr2
4 chr2
5 chr2
6 chr3
7 chr3
8 chr4
9 chr4
10 chr4
11 chr5
12 chr5
13 chr5
>>> # Shuffle the chr column
...
>>> ab_shuffle1 = ab_drop.sample(frac=1, random_state=1)
>>> ab_shuffle1.reset_index(inplace=True, drop=True)
>>> ab_shuffle1
chr
0 chr2
1 chr3
2 chr3
3 chr2
4 chr4
5 chr2
6 chr1
7 chr5
8 chr1
9 chr5
10 chr4
11 chr4
12 chr5
13 chr2
>>>
洗牌后,一些值没有改变,例如索引3、5和12。在没有分配相同值的情况下,洗牌的最佳方法是什么
这是快速的,肮脏的,正如巴尔马指出的那样,可能导致没有解决方案,但它在最简单的情况下工作,几乎没有负担
相关问题 更多 >
编程相关推荐