我的问题类似于this,但我不确定如何修改列表中元素的最后一部分.
我想根据列名的起始方式将一个数据帧拆分为更小的数据帧.
例如,列名的格式为:
df = pd.DataFrame(np.random.randint(0,100,size=(10, 4)))
df.columns = ['P1_ATGC', 'P1_GCTA', 'P2_AACT', 'P2_CGAT']
df
P1_ATGC P1_GCTA P2_AACT P2_CGAT
0 78 86 47 78
1 22 48 22 43
2 91 12 45 10
3 83 85 9 20
4 82 26 25 71
5 13 36 53 19
6 93 15 30 28
7 24 13 55 23
8 10 49 98 45
9 85 35 77 89
并希望最终 for each PX提供单独的df.例如:
df[0]
P1_ATGC P1_GCTA
0 78 86
1 22 48
2 91 12
3 83 85
4 82 26
5 13 36
6 93 15
7 24 13
8 10 49
9 85 35
df[1]
P2_AACT P2_CGAT
0 47 78
1 22 43
2 45 10
3 9 20
4 25 71
5 53 19
6 30 28
7 55 23
8 98 45
9 77 89
我可以得到唯一的PXs:np.unique([x.split('_')[0] for x in df.columns])
array(['P1', 'P2'], dtype='<U2')
但是,如何根据数据帧所属的PX按列拆分数据帧呢?