numpy Array_Split,具有分组字符串索引

7y4bm7vi  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(60)

我有一个 Dataframe ,我想在其中创建子数组(即块)。我读过如何在np.array_split中传递一个字符串值列表作为索引变量,但我的场景有点复杂,我不确定最佳方法。
从下面的表/数组,我想有2个子数组:一个数组包括索引字符串值“Alpha”和“Bravo”,第二个数组具有值“Charlie”和“Delta”
示例表:
| 色谱柱1|列2| Column2 |
| --|--| ------------ |
| 样品|十二个| 12 |
| 样品|十三个| 13 |
| 样品|十四个| 14 |
| 样品|十五个| 15 |
| 样品|十六个| 16 |
| 样品|十七个| 17 |
| 样品|十八个| 18 |
| 样品|十九岁| 19 |
| 样品|二十个| 20 |
| 样品|二十一| 21 |

wxclj1h5

wxclj1h51#

假设有一个DataFrame,并且您希望按自定义组拆分:

groups = [['Alpha', 'Bravo'], ['Charlie', 'Delta']]

dfs = [g for _, g in df.groupby(df['Index'].map({k: v for v,l in enumerate(groups) for k in l}))]

字符串
输出量:

dfs[0]

   Index Column1  Column2
0  Alpha  sample       12
1  Alpha  sample       13
2  Alpha  sample       14
3  Bravo  sample       15

dfs[1]

     Index Column1  Column2
4  Charlie  sample       16
5  Charlie  sample       17
6    Delta  sample       18
7    Delta  sample       19
8    Delta  sample       20
9    Delta  sample       21


或者,如果“索引”实际上是索引:

groups = [['Alpha', 'Bravo'], ['Charlie', 'Delta']]

dfs = [df.loc[l] for l in groups]


输出量:

dfs[0]

      Column1  Column2
Alpha  sample       12
Alpha  sample       13
Alpha  sample       14
Bravo  sample       15

dfs[1]

        Column1  Column2
Charlie  sample       16
Charlie  sample       17
Delta    sample       18
Delta    sample       19
Delta    sample       20
Delta    sample       21


最后,如果您没有明确的组合,而只是想要2个值的组(按顺序),那么用途:

dfs = [g for _,g in df.groupby(pd.factorize(df['Index'])[0]//2)]

相关问题